基本语法
1. try-except
结构
try:# 可能会抛出异常的代码块num = 1 / 0 # 这里会引发 ZeroDivisionError 异常
except ZeroDivisionError:# 处理 ZeroDivisionError 异常的代码块print("除数不能为零!")
在上述代码中,try
块中的 1 / 0
会引发 ZeroDivisionError
异常,程序会立即跳转到 except
块中执行相应的处理代码。
2. 捕获多种异常
try:num = int("abc") # 这里会引发 ValueError 异常result = 1 / num
except ValueError:print("输入的不是有效的整数!")
except ZeroDivisionError:print("除数不能为零!")
在这个例子中,try
块中的 int("abc")
会引发 ValueError
异常,程序会根据异常类型跳转到对应的 except
块进行处理。
3. 捕获所有异常
try:num = 1 / 0
except Exception as e:print(f"发生了异常:{e}")
使用 except Exception as e
可以捕获所有类型的异常,并将异常对象赋值给变量 e
,方便获取异常的详细信息。
4. try-except-else
结构
try:num = int(input("请输入一个整数:"))result = 10 / num
except ValueError:print("输入的不是有效的整数!")
except ZeroDivisionError:print("除数不能为零!")
else:# 如果 try 块中没有发生异常,会执行 else 块中的代码print(f"结果是:{result}")
在这个例子中,如果 try
块中的代码没有引发异常,程序会执行 else
块中的代码。
5. try-except-finally
结构
try:file = open("nonexistent_file.txt", "r")content = file.read()
except FileNotFoundError:print("文件未找到!")
finally:# 无论 try 块中是否发生异常,finally 块中的代码都会执行if 'file' in locals():file.close()print("执行 finally 块")
finally
块中的代码无论 try
块中是否发生异常都会执行,通常用于释放资源,如关闭文件、关闭数据库连接等。
示例代码整合
try:num = int(input("请输入一个非零整数:"))result = 10 / num
except ValueError:print("输入的不是有效的整数!")
except ZeroDivisionError:print("除数不能为零!")
else:print(f"结果是:{result}")
finally:print("程序结束。")
这个示例代码结合了 try-except-else-finally
结构,完整地展示了异常处理的流程。