本文目录导读:

我来给你展示Python中try-except捕获异常的常用案例:
基础异常捕获
# 基础用法
try:
number = int(input("请输入一个数字: "))
result = 10 / number
print(f"10 ÷ {number} = {result}")
except ValueError:
print("错误:请输入有效的数字!")
except ZeroDivisionError:
print("错误:除数不能为0!")
捕获多个异常
# 捕获多种异常类型
try:
data = [1, 2, 3]
index = int(input("请输入索引: "))
print(f"元素值为: {data[index]}")
except (ValueError, IndexError) as e:
print(f"发生错误: {e}")
使用else和finally
# else - 没有异常时执行
# finally - 无论是否异常都执行
try:
file = open("test.txt", "r")
content = file.read()
except FileNotFoundError:
print("文件不存在!")
else:
print("文件读取成功")
print(content)
finally:
print("程序执行完毕")
if 'file' in locals():
file.close()
获取异常信息
# 获取异常详细信息
try:
x = 1 / 0
except Exception as e:
print(f"异常类型: {type(e).__name__}")
print(f"异常信息: {str(e)}")
print(f"详细描述: {repr(e)}")
自定义异常
# 自定义异常类
class CustomError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
try:
age = int(input("请输入年龄: "))
if age < 0 or age > 150:
raise CustomError("年龄超出有效范围!")
print(f"年龄: {age}")
except CustomError as e:
print(f"自定义错误: {e}")
except ValueError:
print("请输入有效的数字!")
实际应用案例
def safe_divide():
"""安全的除法运算"""
try:
a = float(input("被除数: "))
b = float(input("除数: "))
result = a / b
except ValueError:
print("❌ 输入必须是数字!")
return None
except ZeroDivisionError:
print("❌ 除数不能为0!")
return None
except Exception as e:
print(f"❌ 未知错误: {e}")
return None
else:
print(f"✅ 计算结果: {result}")
return result
finally:
print("--- 本次运算结束 ---")
# 调用函数
safe_divide()
文件操作异常处理
def read_config(filename):
"""读取配置文件"""
try:
with open(filename, 'r', encoding='utf-8') as f:
config = f.read()
return config
except FileNotFoundError:
print(f"❌ 配置文件 {filename} 不存在")
return None
except PermissionError:
print(f"❌ 没有权限读取文件 {filename}")
return None
except UnicodeDecodeError:
print(f"❌ 文件编码格式不正确")
return None
except Exception as e:
print(f"❌ 读取文件时发生错误: {e}")
return None
# 测试
config = read_config("config.txt")
异常捕获最佳实践
# ✅ 好的做法:具体异常类型
try:
# 代码
pass
except ValueError:
# 处理特定异常
pass
# ❌ 不好的做法:捕获所有异常
try:
# 代码
pass
except: # 不推荐
# 隐藏了所有错误
pass
# ✅ 更好的做法:记录日志
import logging
try:
# 可能出错的代码
pass
except Exception as e:
logging.error(f"发生错误: {e}", exc_info=True)
# 或者重新抛出
raise
这些案例涵盖了Python异常处理的主要场景,根据具体需求选择合适的方式即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播