Python try-except语句
try-except 用于捕获和处理异常,防止程序因错误而中断。
基本语法
标准结构
Python
try:
# 可能出错的代码
risky_code()
except:
# 异常处理代码
handle_error()
基本示例
Python
try:
result = 10 / 0
except:
print("发生错误")
# 输出:发生错误
捕获特定异常
指定异常类型
Python
try:
result = 10 / 0
except ZeroDivisionError:
print("除零错误")
多种异常类型
Python
try:
value = int("abc")
except ValueError:
print("值转换错误")
except TypeError:
print("类型错误")
元组捕获多种异常
Python
try:
value = int("abc")
except (ValueError, TypeError):
print("转换错误")
获取异常对象
使用 as 关键字
Python
try:
value = int("abc")
except ValueError as e:
print(f"错误信息: {e}")
# 输出:错误信息: invalid literal for int() with base 10: 'abc'
获取异常类型
Python
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"异常类型: {type(e).__name__}")
print(f"异常信息: {e}")
# 异常类型: ZeroDivisionError
# 异常信息: division by zero
实际应用
文件操作
Python
try:
with open("data.txt", "r") as f:
content = f.read()
except FileNotFoundError:
print("文件不存在")
except PermissionError:
print("无权限访问")
用户输入处理
Python
try:
age = int(input("请输入年龄: "))
if age < 0:
raise ValueError("年龄不能为负")
except ValueError as e:
print(f"输入错误: {e}")
网络请求
Python
try:
response = requests.get("https://api.example.com")
data = response.json()
except requests.RequestException as e:
print(f"请求失败: {e}")
异常链
try 内嵌套 try
Python
try:
try:
value = int("abc")
except ValueError:
print("内层处理")
raise # 继续抛出
except ValueError:
print("外层处理")
异常捕获原则
不要捕获所有异常
Python
# 不推荐
try:
do_something()
except: # 捕获所有异常,包括系统异常
print("出错")
# 推荐:捕获具体异常
try:
do_something()
except ValueError:
print("值错误")
except TypeError:
print("类型错误")
精确捕获
Python
try:
result = 10 / int(input("请输入数字: "))
except ValueError:
print("输入必须是数字")
except ZeroDivisionError:
print("不能输入0")
异常处理流程
text
try → 可能出错代码 → 正常执行 → 跳过 except
↓
异常 → 检查 except → 匹配 → 执行处理
↓
不匹配 → 继续向外抛出
要点总结
- try 放可能出错的代码,except 放处理代码
- 指定具体异常类型,避免捕获所有
- 使用 as 获取异常对象和错误信息
- 多异常用元组合并捕获
- 异常处理要精确,不掩盖问题
📝 发现内容有误?点击此处直接编辑