放置仅由特定类引发的自定义Python异常的最佳实践位置
我想编写一些只由特定python类引发的自定义异常,但可能有两种方法。我可以将其作为模块本身的一部分:放置仅由特定类引发的自定义Python异常的最佳实践位置,python,Python,我想编写一些只由特定python类引发的自定义异常,但可能有两种方法。我可以将其作为模块本身的一部分: class FooException(Exception): pass class FooClass(): def something(): # code raise FooException("something went wrong") 或者,我可以将其嵌套在类本身中: class FooClass(): class FooExc
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
有没有一个蟒蛇式的最佳实践?我找了一下,但没找到 在模块(全局)级别保留异常。将它们嵌套在类中只会让想要使用您的类的人做更多的工作:
try:
FooClass().something()
except FooClass.FooException:
pass
这是毫无意义的重复。你的意思是它们只会在类内引发还是只会在类内被捕获?它们只会在类内引发,但可能会从外部被捕获。因为类外的代码可能希望捕获异常,这不仅仅是全班同学都用的,这很有道理。我编辑了这篇文章,使它更具体。