python中的try...except异常处理

在 Python 里,tryexcept 语句用于处理异常,也就是程序运行时出现的错误。异常处理能让你在程序碰到错误时不直接崩溃,而是执行特定的代码逻辑来应对错误,增强程序的健壮性。

基本语法

tryexcept 语句的基本语法如下:

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("发生了一个未知错误!")

代码解释

这种方式虽然能捕获所有异常,但不建议经常使用,因为它会隐藏代码中潜在的问题,让调试变得困难。通常建议明确指定要捕获的异常类型。

elsefinally 子句

try 语句还可以搭配 elsefinally 子句使用:

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 块里的代码都会被执行。通常用于释放资源,比如关闭文件、关闭数据库连接等。
posted @ 2025-03-22 23:06  icuic  阅读(327)  评论(0)    收藏  举报