我有一个特殊的例外,只能在类中发生 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)
因为出口规则,把它放在外面.此异常仅在类中引发,但它可能(并且可能会)冒泡到代码的其他部分,因此其他模块可能想要捕获它.
如果异常在类之外,则可以选择仅导出异常.如果异常在类中,则必须导出具有异常的整个类,或者使用类似的东西__all__ = [Foo.FooError, ...],基本上模仿外部异常.
如果异常只是在课堂上被提出并被捕获,它可能有意义,但我仍然不认为它是惯用的.