Python 自定义异常详解 [Python 异常][Python 自定义异常类]

您的“关注”和“点赞”,是信任,是认可,是支持,是动力…

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

1 Python 自定义异常类

日常开发中,当系统提供的异常类型不能满足开发的需求时,就需要自己创建一个新的异常类来拥有自己的异常。

自定义异常类继承自 Exception 类,可以直接继承,或者间接继承。
对于异常类的层次结构(或叫异常类的继承关系),请参见博文《Python 异常类的层次结构、或叫继承关系一览无余》

举例如下所示:

# 自定义异常类 MyError ,继承普通异常基类 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)

2 Python 自定义异常:自定义异常类的使用

系统自带的异常只要触发会自动抛出,比如 ZeroDivisionError、NameError 等等。

但用户自定义的异常需要用户自己决定什么时候抛出。可以使用 raise 语句手动抛出自定义的异常。
对于 raise 语句,请参见博文《Python raise 语句详解》

再用 try 块捕捉用户手动抛出的异常,except 块处理就 ok 了。

举例如下所示:

# 自定义异常类 MyError ,继承普通异常基类 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)


try:
    num = input("请输入数字:")
    if not num.isdigit():  # 判断输入的是否是数字
        raise MyError(num)  # 输入的如果不是数字,手动指定抛出异常
except MyError as e:
    print("MyError:请输入数字。您输入的是:", e.value)

运行结果:

请输入数字:a
MyError:请输入数字。您输入的是: a

【友情链接】

微信公众号:码农阿杰

博客园

【参考资料】

Python 官网

Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章