为什么需要从 BaseException 派生自定义异常?

时间:2020-12-18 20:44:32

标签: python python-3.x

您在 Python 中创建的每个类都隐式地派生自 object。要创建新的错误类,您必须从 BaseException 或其子类之一派生它(通常,Exception 用于此目的)。此自定义异常将成功通过 isinstance(MyException, object) 测试,因此它仍然是 object。但我想知道,实施这种限制的原因是什么?为什么我们需要从 BaseException 或其后代派生而不是这样做:

class MyException:
    pass


raise MyException()

1 个答案:

答案 0 :(得分:1)

raise 需要一些特殊的 C 级属性才能正常工作(特别是这些 here)。

在纯 python 中将这些放入您的对象的唯一方法是子类化 BaseException。因此,python 开发人员简单地决定每个可引发对象,即使在 C 模块中定义,也应该从 BaseException 继承以简化检查。

相关问题