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

now*_*wox 3 python oop

我有一个特殊的例外,只能在类中发生 Foo

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

class Foo:
    class FooError(Exception):
        pass

    def bar(self):
        raise self.FooError('omg')
Run Code Online (Sandbox Code Playgroud)

或者最好放在FooError外面Foo

class FooError(Exception):
    pass

class Foo:
    def bar(self):
        raise FooError('omg')
Run Code Online (Sandbox Code Playgroud)

Bop*_*reH 5

因为出口规则,把它放在外面.此异常仅在类中引发,但它可能(并且可能会)冒泡到代码的其他部分,因此其他模块可能想要捕获它.

如果异常在类之外,则可以选择仅导出异常.如果异常类中,则必须导出具有异常的整个类,或者使用类似的东西__all__ = [Foo.FooError, ...],基本上模仿外部异常.

如果异常只是在课堂上被提出并被捕获,它可能有意义,但我仍然不认为它是惯用的.