Python 抛出异常

Python 抛出异常语法

在 Python 中,我们可以使用 raise 关键字来主动抛出异常。raise 用于抛出异常来阻断程序的正常执行,并创建自定义的异常情况。

语法:

raise 异常类名('异常的详细提示信息')

说明:

使用 raise 关键字抛出异常时,我们通常会在 raise 后面跟上一个具体的异常类(例如 ValueError、TypeError 等),并且在括号中传入一段字符串,用于说明究竟是哪里出错了。

要使用 raise 关键字引发异常,首先需要创建一个异常类或使用已有的异常类。Python 提供了很多内置的异常类,如下表所示。

Python 常见异常类
异常类 说明
ValueError 值的类型或范围不符合
NameError 变量不存在
AttributeError 属性不存在
KeyError 键不存在
SyntaxError 语法错误
TypeError 类型错误
ZeroDivisionError 除数为 0
IndexError 索引超出范围
IOError 输入输出异常

Python 抛出异常示例

接下来,我们通过几个简单的例子来讲解 Python 是如何抛出异常的。

示例 1:raise 抛出内置异常

def divide(x, y):
    if y < 0:
        raise ValueError('除数不能小于0')
    return x / y

divide(20, -10)

运行结果如下。

ValueError: 除数不能小于 0

分析:

在上面例子中,我们定义了一个名为 divide 的函数,用于计算两个数的商。然后有这样一个需求 “除数不能为 0”。此时判断 y 是否小于 0,如果小于 0 则使用 raise 主动抛出一个异常。这样就不会执行后面的 return x/y 了。

提示: 在符合条件时,Python 本身会自动抛出一些异常而无需我们手动抛出,比如除数为 0 时会自动抛出 ZeroDivisionError 异常。但有时为了满足业务需求,我们需要在某些条件不满足时能主动抛出异常,此时就可以使用 raise 来实现。

上面使用的是 Python 内置的异常类(ValueError),我们还可以在 raise 后面使用自定义异常类,请看下面例子。

示例 2:raise 抛出自定义异常

# 自定义异常类
class MyCustomException(Exception):
    def __init__(self, message):
        self.message = message

def divide(x, y):
    if y < 0:
        # 调用自定义异常类
        raise MyCustomException('除数不能小于0')
    return x / y

divide(20, -10)

运行结果如下。

MyCustomException: 除数不能小于 0

分析:

从结果可以看出,此时 raise 抛出的就是我们自定义的异常类(即 MyCustomException)了。

上一篇: Python assert

下一篇: Python with 语句

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号