Python中的内部或外部异常类?

2024-06-16 12:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个特殊的异常,它只能发生在类Foo

使用内部异常类是否合适,如下所示:

class Foo:
    class FooError(Exception):
        pass

    def bar(self):
        raise self.FooError('omg')

或者把FooErrorFoo放在外面更好?你知道吗

class FooError(Exception):
    pass

class Foo:
    def bar(self):
        raise FooError('omg')

Tags: selffoodefexceptionbarpassclassraise
1条回答
网友
1楼 · 发布于 2024-06-16 12:18:53

把它放在外面,因为出口规则。这个异常只在类内部引发,但它可能(也可能会)冒泡到代码的其他部分,所以其他模块可能想要捕获它。你知道吗

如果异常在类外部,则可以选择仅导出异常。如果异常是类内部的异常,则必须将整个类与异常一起导出,或者使用__all__ = [Foo.FooError, ...]之类的方法,基本上模仿外部异常。你知道吗

如果只在类中引发并捕获了异常,这可能是有意义的,但我仍然不认为它是惯用的。你知道吗

相关问题 更多 >