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

时间:2015-11-03 19:33:08

标签: python oop

我有一个特殊的例外,只能在类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')

1 个答案:

答案 0 :(得分:5)

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

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

如果异常只是在课堂上被引发并被抓住,它可能有意义,但我仍然不认为它是惯用的。