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 类型都是自定义的异常类型。并且子类会属于父类的类型。

他们的继承关系如下图所示: