Python 异常处理入门
异常处理是 Python 的核心技能,本文介绍 try/except/finally 的用法。
1. 基本结构
try:
result = 10 / 0
except ZeroDivisionError:
print("不能除以零")
try-except-else
try:
result = 10 / 2
except ZeroDivisionError:
print("除以零错误")
else:
print(f"结果是 {result}") # 只有没有异常时执行
try-except-finally
try:
f = open("file.txt")
content = f.read()
finally:
f.close() # 总会执行
完整结构
try:
result = x / y
except ZeroDivisionError:
print("除以零")
else:
print("result is", result)
finally:
print("executing finally clause")
2. 捕获异常
捕获多个异常
try:
x = int("abc")
except (ValueError, TypeError):
print("类型或值错误")
获取异常信息
try:
x = int("abc")
except ValueError as e:
print(f"错误: {e}")
重新抛出异常
try:
raise NameError("HiThere")
except NameError:
print('An exception flew by!')
raise # 重新抛出
3. 抛出异常
raise ValueError("Invalid value")
raise TypeError("Expected int, got str")
4. 自定义异常
class MyError(Exception):
pass
raise MyError("Something wrong")
5. 常见异常类型
| 异常 | 说明 |
|---|---|
| ZeroDivisionError | 除以零 |
| TypeError | 类型错误 |
| ValueError | 值错误 |
| FileNotFoundError | 文件不存在 |
| KeyError | 字典键不存在 |
| IndexError | 索引超出范围 |
异常处理让程序更健壮,必需掌握。