Python的异常处理语句主要包括以下几个关键字:
-
try/except
try
块包含可能会引发异常的代码。except
块则包含用于处理这些异常的代码。try: # 尝试执行的代码块 result = 10 / 0 except ZeroDivisionError: # 当发生 ZeroDivisionError 异常时执行的代码块 print("除数不能为零")
你还可以捕获多种异常类型,或者使用
except
而不指定异常类型来捕获所有异常:try: # 尝试执行的代码块 pass except (ValueError, TypeError) as e: # 当发生 ValueError 或 TypeError 异常时执行的代码块 print("发生了错误:", e) except Exception as e: # 捕获所有其他异常 print("发生了未知错误:", e)
-
else
else
块是可选的,当try
块中的代码成功执行而没有引发异常时,else
块中的代码将被执行。try: # 尝试执行的代码块 pass except Exception as e: # 异常处理代码块 print("发生了错误:", e) else: # 如果没有异常发生,则执行此代码块 print("代码执行成功")
-
finally
finally
块也是可选的,无论try
块中的代码是否引发异常,finally
块中的代码都将被执行。这通常用于执行清理操作,如关闭文件或释放资源。try: # 尝试执行的代码块 with open('myfile.txt', 'r') as f: data = f.read() except FileNotFoundError: # 当文件未找到时执行的代码块 print("文件未找到") finally: # 无论是否发生异常,都会执行的代码块 print("执行清理操作")
-
raise
raise
语句用于显式地引发异常。你可以使用它来抛出一个特定的异常或创建一个新的异常。raise ValueError("这是一个值错误") # 或者创建一个带有自定义错误消息的异常实例 try: raise Exception("这是一个自定义异常") except Exception as e: print(e)
-
assert
虽然
assert
不是专门的异常处理语句,但它也用于错误处理。assert
语句用于测试一个条件,如果条件为假,则引发一个AssertionError
异常。assert 1 == 2, "1 不等于 2" # 如果条件不满足(即 1 不等于 2),则引发 AssertionError,并显示 "1 不等于 2"