在 Python 编程中,异常处理是保证程序健壮性的关键。以下整理常见异常类型、触发原因及处理方案,附代码:
一、基础异常处理结构
python
try:
# 可能出错的代码
result = 10 / 0
except ZeroDivisionError: # 捕获特定异常
print("除数不能为零")
except (TypeError, ValueError) as e: # 捕获多个异常
print(f"类型或值错误: {e}")
else:
print("未发生异常时执行")
finally:
print("无论是否异常都会执行")
二、五大常见异常及处理方案
1. SyntaxError(语法错误)
触发原因:代码不符合 Python 语法规则 示例:print("Hello"(缺少括号) 处理方案:检查 IDE 提示,修正语法错误 无法用 try-except 捕获(发生在编译阶段)
2. NameError(名称错误)
触发原因:访问未定义的变量/函数
示例:
print(undefined_var) # 变量未定义
处理方案:
python
try:
print(undefined_var)
except NameError:
print("变量未定义!")
3. TypeError(类型错误)
触发原因:操作或函数应用于不适当类型的对象
示例:
"10" + 5 # 字符串 + 整数
处理方案:
ini
try:
result = "10" + 5
except TypeError:
result = int("10") + 5 # 类型转换
4. AttributeError(属性错误)
触发原因:访问对象不存在的属性/方法 示例:
go
s = "hello"
s.append("!") # 字符串无 append 方法
处理方案:
python
try:
s.append("!")
except AttributeError:
s += "!" # 正确操作
5. ImportError(导入错误)
触发原因:导入模块/模块内对象失败 示例:
javascript
import non_existent_module
from math import non_existent_func
处理方案:
python
try:
import pandas as pd
except ImportError:
print("请安装 pandas: pip install pandas")
三、注意事项
避免过度捕获:如 KeyboardInterrupt(用户终止)通常不应被捕获
异常链:Python 3+ 支持 raise ... from ... 保留原始异常上下文
性能影响:异常处理比 if 检查慢,高频操作中优先用条件判断
通过合理使用异常处理机制,可显著提升代码的容错性与用户体验。