python的异常捕获

26 min read

在Python中,可以使用try-except语句来捕获异常。try代码块中包含可能会引发异常的代码,而except代码块中包含针对异常的处理代码。

以下是一个示例:

try:
    # 可能会引发异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 针对ZeroDivisionError异常的处理代码
    print("除数不能为零")
except:
    # 针对其他异常的处理代码
    print("发生了其他异常")

在上面的例子中,10 / 0这行代码可能会引发ZeroDivisionError异常。如果发生了这个异常,程序会跳转到对应的except ZeroDivisionError代码块。如果发生了其他异常,程序会跳转到except代码块。

除了指定特定的异常类型,还可以使用一个except语句来捕获所有异常。例如:

try:
    # 可能会引发异常的代码
    result = 10 / 0
except:
    # 针对所有异常的处理代码
    print("发生了异常")

注意,捕获所有异常可能会隐藏一些未预料到的错误,因此最好在处理所有异常的代码块中打印异常信息,以便于调试和定位问题。

除了try-except语句,还可以使用try-except-finally语句来处理异常。finally代码块中的代码无论是否发生异常,都会执行。

try:
    # 可能会引发异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 针对ZeroDivisionError异常的处理代码
    print("除数不能为零")
finally:
    # 无论是否发生异常,都会执行的代码
    print("程序结束")

在上面的例子中,无论是否发生了异常,都会输出"程序结束"。

除了使用try-except捕获异常,还可以使用raise语句手动引发异常。例如:

try:
    grade = int(input("请输入分数:"))
    if grade < 0 or grade > 100:
        raise ValueError("分数必须在0到100之间")
except ValueError as e:
    print(e)

在上面的例子中,如果输入的分数不在有效范围内,就会手动引发一个ValueError异常。然后,程序会跳转到对应的except ValueError as e代码块,e变量将引用异常对象,并可以打印出异常信息。

这是Python中异常捕获的一些基本用法,根据具体的程序逻辑和需求,可以灵活运用。