您的“关注”和“点赞”,是信任,是认可,是支持,是动力…
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
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