2024-06-16 12:18:53 发布
网友
我有一个特殊的异常,它只能发生在类Foo中
Foo
使用内部异常类是否合适,如下所示:
class Foo: class FooError(Exception): pass def bar(self): raise self.FooError('omg')
或者把FooError从Foo放在外面更好?你知道吗
FooError
class FooError(Exception): pass class Foo: def bar(self): raise FooError('omg')
把它放在外面,因为出口规则。这个异常只在类内部引发,但它可能(也可能会)冒泡到代码的其他部分,所以其他模块可能想要捕获它。你知道吗
如果异常在类外部,则可以选择仅导出异常。如果异常是类内部的异常,则必须将整个类与异常一起导出,或者使用__all__ = [Foo.FooError, ...]之类的方法,基本上模仿外部异常。你知道吗
__all__ = [Foo.FooError, ...]
如果只在类中引发并捕获了异常,这可能是有意义的,但我仍然不认为它是惯用的。你知道吗
把它放在外面,因为出口规则。这个异常只在类内部引发,但它可能(也可能会)冒泡到代码的其他部分,所以其他模块可能想要捕获它。你知道吗
如果异常在类外部,则可以选择仅导出异常。如果异常是类内部的异常,则必须将整个类与异常一起导出,或者使用
__all__ = [Foo.FooError, ...]
之类的方法,基本上模仿外部异常。你知道吗如果只在类中引发并捕获了异常,这可能是有意义的,但我仍然不认为它是惯用的。你知道吗
相关问题 更多 >
编程相关推荐