python中的try...except异常处理
在 Python 里,try 和 except 语句用于处理异常,也就是程序运行时出现的错误。异常处理能让你在程序碰到错误时不直接崩溃,而是执行特定的代码逻辑来应对错误,增强程序的健壮性。
基本语法
try 和 except 语句的基本语法如下:
try:
# 可能会引发异常的代码块
pass
except ExceptionType:
# 当指定类型的异常发生时执行的代码块
pass
代码解释
try块:此代码块中放置的是可能会引发异常的代码。当 Python 执行到try块时,会试着运行其中的代码。except块:要是try块中的代码引发了异常,程序的控制权就会转到except块。ExceptionType是要捕获的异常类型,只有该类型的异常发生时,except块里的代码才会被执行。
示例代码
try:
num1 = 10
num2 = 0
result = num1 / num2 # 这里会引发 ZeroDivisionError 异常
print(result)
except ZeroDivisionError:
print("错误: 除数不能为零!")
代码解释
在上述代码中,try 块里的 num1 / num2 操作由于除数为零,会引发 ZeroDivisionError 异常。一旦该异常发生,程序会跳过 try 块中剩余的代码,直接执行 except ZeroDivisionError 块里的代码,输出错误提示信息。
捕获多种异常
你可以使用多个 except 块来捕获不同类型的异常:
try:
num = int("abc") # 这里会引发 ValueError 异常
result = 10 / num
print(result)
except ValueError:
print("错误: 输入不是有效的整数!")
except ZeroDivisionError:
print("错误: 除数不能为零!")
代码解释
在这个例子中,try 块里的 int("abc") 操作会引发 ValueError 异常,程序会执行对应的 except ValueError 块里的代码。要是 try 块里的代码引发了 ZeroDivisionError 异常,就会执行 except ZeroDivisionError 块里的代码。
捕获所有异常
你也可以使用不带异常类型的 except 块来捕获所有类型的异常:
try:
num = int("abc")
result = 10 / num
print(result)
except:
print("发生了一个未知错误!")
代码解释
这种方式虽然能捕获所有异常,但不建议经常使用,因为它会隐藏代码中潜在的问题,让调试变得困难。通常建议明确指定要捕获的异常类型。
else 和 finally 子句
try 语句还可以搭配 else 和 finally 子句使用:
try:
num = int("10")
result = 10 / num
except ValueError:
print("错误: 输入不是有效的整数!")
except ZeroDivisionError:
print("错误: 除数不能为零!")
else:
# 当 try 块中没有发生异常时执行
print("计算结果:", result)
finally:
# 无论是否发生异常,都会执行
print("程序结束。")
代码解释
else子句:当try块里的代码没有引发任何异常时,else块里的代码会被执行。finally子句:不管try块里是否发生异常,finally块里的代码都会被执行。通常用于释放资源,比如关闭文件、关闭数据库连接等。

浙公网安备 33010602011771号