阅读量:1
基本异常处理
Python 提供了 try…except 语句来处理异常。其基本结构如下:
try: # 可能会引发异常的代码 risky_code() except ExceptionType as e: # 处理异常的代码 handle_exception(e)
示例
try: x = 10 / 0 except ZeroDivisionError as e: print("捕获到除零错误:", e)
在这个示例中,当尝试除以零时,会引发 ZeroDivisionError 异常,并在 except 块中捕获和处理。
多个异常处理
你可以在 except 语句中处理多种不同类型的异常:
try: x = int("not a number") except ValueError as e: print("捕获到值错误:", e) except TypeError as e: print("捕获到类型错误:", e)
使用 else 和 finally
try…except 语句还可以与 else 和 finally 语句一起使用:
else 块中的代码仅在 try 块没有引发异常时执行。
finally 块中的代码无论是否引发异常都会执行,常用于清理资源。
try: x = int(input("请输入一个整数: ")) except ValueError as e: print("这不是一个整数!") else: print("输入的整数是:", x) finally: print("程序结束")
自定义异常
你可以定义自己的异常类,以便在程序中引发和捕获:
class MyCustomError(Exception): pass def risky_function(): raise MyCustomError("这是一个自定义错误") try: risky_function() except MyCustomError as e: print("捕获到自定义错误:", e)
异常传递
异常可以被传递到调用栈的上层,直到被捕获:
def func1(): raise ValueError("错误信息") def func2(): try: func1() except ValueError as e: print("捕获到 func1 的异常:", e) func2()
在这个示例中,func1 引发的异常被 func2 捕获。