7. 自定义异常类型
python支持自定义异常类,这样可以丰富错误的类型,明确区分错误,提高代码的可读性,并可以分层处理错误信息。
异常类都必须继承自 BaseException 类。
BaseException类的示例代码
class BaseException(object):
def __init__(self, *args):
self.args = args
示例:
# 此示例示意自定义异常类型
class ScoreError(BaseException): # 分数错误!
def __init__(self, data):
self.data = data
super().__init__(data)
class TooSmallScoreError(ScoreError): # 分数小于零的错误
pass
class TooLargeScoreError(ScoreError): # 分数太大的错误
pass
def get_score():
score = int(input("请输入您的成绩: "))
if score < 0:
err = TooSmallScoreError(f'{score}')
raise err
return score
try:
score = get_score()
print("学生的成绩是:", score)
except TooSmallScoreError as e:
print('成绩太小了, 分数', e.data)
except ScoreError as e:
print('成绩错了,e:', e.data)
上述三个类 ScoreError、TooSmallScoreError 和 TooLargeScoreError 类型都是自定义的异常类型。并且子类会属于父类的类型。
他们的继承关系如下图所示: