如何在一个 Python except 块中捕捉多个异常?

如何在一个 Python except 块中捕捉多个异常?

Python 中,我们经常会遇到需要捕捉不同类型异常的情况。一个简单的方法是使用多个 except 块来捕捉不同类型的异常,如下所示:

try:
    # some code
except ValueError:
    # handle ValueError exception
except ZeroDivisionError:
    # handle ZeroDivisionError exception

以上代码中,我们使用了两个 except 块来捕捉 ValueError 和 ZeroDivisionError 异常。然而,如果需要捕捉的异常类型较多,会导致代码变得冗长。

Python 提供了一个更简便的方法可以在一个 except 块中捕捉多个不同类型的异常,如下所示:

try:
    # some code
except (ValueError, ZeroDivisionError):
    # handle ValueError or ZeroDivisionError exception

可以看到,我们使用了一个括号将要捕捉的异常类型括起来,用逗号分隔。这样,在 except 块中就可以同时捕捉多种类型的异常了。

下面是一个具体的例子,演示如何在一个 except 块中捕捉多个异常:

def division(x, y):
    try:
        result = x / y
    except (ValueError, ZeroDivisionError):
        print("Invalid input!")
    else:
        return result

以上代码中,我们定义了一个 division 函数,用于计算两个数相除的结果。在 try 块中,我们尝试求 x/y 的值,如果出现 ValueError 或者 ZeroDivisionError 异常,则在 except 块中打印 “Invalid input!” 的消息。如果正常执行,我们使用 else 块将计算结果返回。

现在,我们可以尝试调用 division 函数来验证代码是否能够正常捕捉多个异常:

print(division(10, 0)) # Invalid input!
print(division(10, "a")) # Invalid input!
print(division(10, 5)) # 2.0

可以看到,当传入的参数导致 ZeroDivisionError 或者 ValueError 异常时,函数会正确地打印 “Invalid input!” 的消息。而当输入正确的参数时,函数会返回计算结果。

更多Python文章,请阅读:Python 教程

结论

使用 except (exc1, exc2, …) 块可以在一个块中捕捉多个异常,这样可以使代码更加简洁。但需要注意的是,exc1、exc2 等需要是异常类型,而不是异常对象。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程