文章目录
- 1. try 和 except
- 2. 多个 except 块
- 3. else 块
- 4. finally 块
- 5. raise 语句
- 6. 自定义异常
- 7. 异常链
1. try 和 except
try 块包含可能引发异常的代码,而 except 块则包含处理这些异常的代码。
try:# 尝试执行可能会引发异常的代码result = 10 / 0 # 这将引发 ZeroDivisionError
except ZeroDivisionError:# 处理 ZeroDivisionError 异常print("不能除以零!")
2. 多个 except 块
你可以使用多个 except 块来处理不同类型的异常。
try:# 尝试执行可能会引发异常的代码result = int("hello") # 这将引发 ValueError
except ValueError:# 处理 ValueError 异常print("值错误:无法将字符串转换为整数")
except ZeroDivisionError:# 处理 ZeroDivisionError 异常print("不能除以零!")
3. else 块
else 块是可选的,它包含在没有异常被触发时执行的代码。
try:# 尝试执行代码result = 5 + 3
except ZeroDivisionError:print("发生除以零的异常")
else:# 如果没有异常发生,则执行此块print("结果是:", result)
4. finally 块
finally 块也是可选的,无论是否发生异常,它都会执行。它通常用于清理代码,如关闭文件或释放资源。
try:# 尝试执行代码result = 10 / 0
except ZeroDivisionError:print("发生除以零的异常")
finally:# 无论是否发生异常,都会执行此块print("这是 finally 块")
5. raise 语句
raise 语句用于显式地触发一个异常。
if some_condition:raise ValueError("条件不满足,引发异常")
6. 自定义异常
你可以创建自定义异常类,这些类通常是内置 Exception 类的子类。
class CustomError(Exception):passtry:raise CustomError("这是一个自定义异常")
except CustomError as e:print(e)
7. 异常链
在 Python 3 中,你可以在 except 块中捕获异常,然后将其包装在另一个异常中,这样可以保留原始异常的上下文。
try:# 尝试执行可能引发异常的代码...
except SomeError as e:# 将原始异常包装在新异常中raise AnotherError("另一个错误发生") from e
通过合理地使用异常处理机制,你可以编写更加健壮和可维护的代码,能够优雅地处理错误情况,而不是让程序崩溃或产生不可预测的行为。