Python 异常处理和代码继续执行

Python 异常处理和代码继续执行

在本文中,我们将介绍如何在 Python 中处理异常,并且让代码在异常发生后继续执行。

异常是在程序执行过程中遇到的错误或异常情况。当出现异常时,程序会中断执行并抛出异常。通常情况下,我们会希望能够捕获并处理异常,然后继续程序的执行。

阅读更多:Python 教程

异常处理基础

Python 中,我们可以使用 try-except 语句来处理异常。try 块中的代码是需要被执行的代码,而 except 块中的代码则用于处理异常。

下面是一个简单的示例,展示了如何捕获和处理异常:

try:
    # 可能会引发异常的代码
    a = 10 / 0
except ZeroDivisionError:
    # 处理除以零异常
    print("除以零异常发生")
Python

在上面的例子中,我们将会得到一个“除以零异常发生”的输出。当我们尝试将 10 除以 0 时,会引发 ZeroDivisionError 异常。然后,except 块中的代码会被执行,输出相应的异常信息。

如果 try 块中的代码没有引发任何异常,那么 except 块将不会被执行。

当我们希望捕获多个不同类型的异常时,可以使用多个 except 块。代码将按照顺序检查每一个 except 块是否能够捕获异常。

try:
    # 可能会引发异常的代码
    a = 10 / 0
except ZeroDivisionError:
    # 处理除以零异常
    print("除以零异常发生")
except NameError:
    # 处理未定义变量异常
    print("未定义变量异常发生")
Python

在上面的代码中,如果除以 0 引发了 ZeroDivisionError 异常,那么对应的 except 块将会被执行。如果有一个未定义的变量,引发了 NameError 异常,相应的 except 块也会被执行。

我们也可以使用一个 except 块来捕获多个类型的异常。下面是一个示例:

try:
    # 可能会引发异常的代码
    a = 10 / 0
except (ZeroDivisionError, NameError):
    # 处理除以零和未定义变量异常
    print("除以零或未定义变量异常发生")
Python

上面的代码使用了括号将多个异常类型括起来,使用逗号分隔。这样,只要引发的异常类型是括号中的其中之一,那么对应的 except 块就会被执行。

异常处理的高级用法

除了捕获和处理异常外,Python 还提供了一些高级的异常处理机制。

finally 块

在 try-except 语句中,我们还可以包含一个可选的 finally 块。不管是否出现异常,finally 块中的代码都会被执行。

try:
    # 可能会引发异常的代码
    a = 10 / 0
except ZeroDivisionError:
    # 处理除以零异常
    print("除以零异常发生")
finally:
    # 不管是否出现异常,这段代码都会被执行
    print("无论是否出现异常,都会执行")
Python

在上面的代码中,无论是否发生异常,finally 块中的代码 “无论是否出现异常,都会执行” 都会被执行。

else 块

在 try-except 语句中,我们还可以包含一个可选的 else 块。如果 try 块中的代码没有引发任何异常,那么 else 块中的代码将会被执行。

try:
    # 可能会引发异常的代码
    b = 10 / 2
except ZeroDivisionError:
    # 处理除以零异常
    print("除以零异常发生")
else:
    # 如果没有异常发生,这段代码将会被执行
    print("没有发生异常")
Python

在上面的代码中,由于除以 0 不会发生异常,所以 else 块中的代码 “没有发生异常” 会被执行。

让代码继续执行

有时候,我们希望让代码在异常发生后继续执行,而不是停止执行。对于这种情况,我们可以在 except 块中捕获异常后进行处理,并使用 continue 语句跳过当前循环迭代,继续下一次迭代。

下面是一个例子,展示了如何让代码在异常发生后继续执行:

data = [1, 2, 3, 4, '5', 6, 7, '8', 9]

for item in data:
    try:
        # 尝试将每个元素转换为整数
        num = int(item)
        print(f"{item} 转换后的整数为:{num}")
    except ValueError:
        # 处理数值转换异常
        print(f"{item} 无法转换为整数")

        # 继续下一次循环迭代
        continue

    # 其他的处理逻辑
    # ...
Python

在上面的代码中,我们尝试将列表中的每个元素转换为整数。如果某个元素无法转换为整数,将会引发 ValueError 异常。在 except 块中,我们输出了对应的异常信息,然后使用 continue 语句让代码继续执行下一次循环迭代。

这样,在遇到无法转换为整数的元素时,我们也能够继续执行后续的代码。

总结

异常处理是编写健壮而可靠的 Python 代码中的重要部分。在本文中,我们学习了如何使用 try-except 语句来捕获和处理异常。我们还介绍了使用多个 except 块和一个 except 块捕获多个异常的方法,以及使用 finally 块和 else 块的高级异常处理机制。最后,我们了解了如何让代码在异常发生后继续执行。

通过合理的异常处理,我们能够更好地控制程序的执行流程,并提升代码的可靠性和稳定性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册