我有一个特殊的例外,只能在类Foo
使用内部异常类如下所示:
class Foo:
class FooError(Exception):
pass
def bar(self):
raise self.FooError('omg')
或者最好将FooError
放在Foo
之外?
class FooError(Exception):
pass
class Foo:
def bar(self):
raise FooError('omg')
答案 0 :(得分:5)
由于出口规则,把它放在外面。此异常仅在类中引发 ,但它可能(并且可能会)冒泡到代码的其他部分,因此其他模块可能希望捕获它。
如果异常在类之外,您可以选择仅导出异常。如果异常在类中,则必须导出具有异常的整个类,或使用类似__all__ = [Foo.FooError, ...]
的内容,基本上模仿外部异常。
如果异常只是在课堂上被引发并被抓住,它可能有意义,但我仍然不认为它是惯用的。