【Python】复习6:异常处理


异常处理

  • try-except语句:捕获和处理程序运行时可能出现的错误或异常。
  • finally语句:无论是否发生异常,都会执行的代码块

在Python中,异常处理是一种强大的错误处理机制,它允许程序在运行时检测到错误或异常情况,并决定如何响应这些状况。通过使用tryexceptfinally语句块,你可以控制程序在发生异常时的行为。

try/except 语句块

try语句块中包含了可能会引发异常的代码。如果try块中的代码没有引发异常,那么程序会继续执行。如果try块中的代码引发了异常,Python会立即停止执行当前try块中的剩余代码,并跳转到相应的except块中执行。

下面是一个简单的try/except示例:

try:
    # 尝试执行可能会引发异常的代码
    x = 1 / 0
except ZeroDivisionError:
    # 如果发生ZeroDivisionError异常,则执行这里的代码
    print("不能除以零!")

你可以使用多个except子句来处理不同类型的异常:

try:
    # 尝试执行可能会引发异常的代码
    x = int('not a number')
except ValueError as e:
    # 如果发生ValueError异常,则执行这里的代码
    print(f"值错误: {e}")
except ZeroDivisionError as e:
    # 如果发生ZeroDivisionError异常,则执行这里的代码
    print(f"除以零错误: {e}")
except Exception as e:
    # 捕获所有其他类型的异常
    print(f"发生了一个未知异常: {e}")

在这个例子中,ValueError异常会首先被捕获,因为它在except子句的列表中更具体。如果try块中的代码引发了ZeroDivisionError异常,那么相应的except子句会被执行。如果发生了其他类型的异常,那么最后一个except子句(使用Exception作为基类)将会捕获它。

finally 语句块

finally语句块无论是否发生异常都会被执行。它通常用于执行一些清理操作,比如关闭文件、释放资源等。

try:
    # 尝试执行可能会引发异常的代码
    f = open('somefile.txt', 'r')
    content = f.read()
    x = 1 / 0
except ZeroDivisionError:
    print("不能除以零!")
finally:
    # 无论是否发生异常,都会执行这里的代码
    if 'f' in locals() and not f.closed:
        f.close()
    print("执行清理操作...")

在这个例子中,无论try块中的代码是否成功执行,finally块都会执行,确保文件被正确关闭。

else 语句块

else语句块是可选的,它会在try块成功执行(即没有引发任何异常)后执行。

try:
    # 尝试执行一些不会引发异常的代码
    result = 10 / 2
except ZeroDivisionError:
    print("不能除以零!")
else:
    # 如果try块成功执行,则执行这里的代码
    print("计算结果为:", result)

综合使用

你可以将try/except/else/finally结合起来使用,以便更全面地控制异常处理流程:

try:
    # 尝试执行可能会引发异常的代码
    result = 10 / int(input("请输入一个数字:"))
except ValueError:
    print("输入的不是一个有效的数字!")
except ZeroDivisionError:
    print("不能除以零!")
else:
    # 如果try块成功执行,则执行这里的代码
    print("计算结果为:", result)
finally:
    # 无论是否发生异常,都会执行这里的代码
    print("程序结束")

通过合理使用异常处理机制,你可以确保你的Python程序在遭遇错误时能够优雅地处理它们,而不是简单地崩溃。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值