前言:
在后续深度学习项目通常运行时间长、资源消耗大, 一个错误可能导致数小时甚至数天的训练中断, 异常处理机制就像安全网,确保程序出错时能:
-
保存当前进度
-
记录错误信息
-
优雅恢复或终止
一、常见的异常
SyntaxError (语法错误)
NameError (名称错误)
TypeError (类型错误)
ValueError (值错误)
IndexError (索引错误)
KeyError (键错误)
AttributeError (属性错误)
ZeroDivisionError (除零错误)
FileNotFoundError (文件未找到错误)
ModuleNotFoundError (导入错误)
二、try - except- else -fiinally
try: 包含可能引发异常的代码。
except: 处理在 try 块中发生的特定异常。
else: (可选)如果 try 块中没有发生任何异常,则执行此代码块。
finally: (可选)无论 try 块中是否发生异常,总会执行此代码块。
代码示例:
python
print("--- try-except-else-finally 完整示例 ---")
def safe_divide(a, b):
print(f"\n尝试计算 {a} / {b}")
try:
result = a / b
except ZeroDivisionError:
print("错误:除数不能为零!")
return None
except TypeError:
print("错误:输入必须是数字!")
return None
else:
# 只有当 try 块中的 a / b 成功执行时,这里才会执行
print("除法运算成功!")
print(f"结果是: {result}")
print(f"结果的两倍是: {result * 2}")
return result
finally:
# 无论是否发生异常,都会执行的部分
print("【finally】计算过程结束,正在清理...")
print("=" * 40)
# 测试用例
safe_divide(10, 2) # 成功
safe_divide(10, 0) # ZeroDivisionError
safe_divide("10", 2) # TypeError
safe_divide(20, "abc") # TypeError