我想编写一些仅由特定的python类引发的自定义异常,但是可能有两种方法可以执行此操作。我可以将其作为模块本身的一部分:
class FooException(Exception):
pass
class FooClass():
def something():
# code
raise FooException("something went wrong")
或者,我可以将其嵌套在类本身中:
class FooClass():
class FooException(Exception):
pass
def something():
# code
raise FooException("something went wrong")
我个人更喜欢第二种,因为在异常和与显式相关的类之间建立联系似乎更干净,但是存在一些缺点。例如,如果您将FooClass子类化:
class BarClass(FooClass):
pass
现在可以将FooClass.FooException也称为BarClass.BarException。
有Pythonic的最佳实践吗?我环顾了一下,但找不到。
最佳答案
将异常保留在模块(全局)级别。将它们嵌套在类中将为想要使用您的类的任何人提供更多的工作:
try:
FooClass().something()
except FooClass.FooException:
pass
那是毫无目的的报应。
关于python - 放置仅由特定类引发的自定义Python异常的最佳实践位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25557456/