我必须从我的班级中为无效参数引发异常。
class MyFunc(object):
class InvalidArgument(ValueError):
pass
所以我从ValueError中分类了。将它放在类中更有意义,因为我不希望我的异常类与库或其他模块中的其他异常发生冲突。但是在python中有时不鼓励使用内部类。我应该在我的班级或班级外部放置InvalidArgument。
答案 0 :(得分:2)
异常子类必须在类外吗?
没有。但是应该将它放在类之外的模块级范围内。
我不希望我的异常类与库或其他模块中的其他异常发生冲突。
不会。它将由模块名称命名。
答案 1 :(得分:1)
在某种程度上,这是一个观点问题,因为Python本身并不要求或禁止在另一个类中定义异常。
但是,我在类中定义它的唯一时间是,如果异常纯粹一个实现细节,它将永远不会被引发或被捕获到其中一个类之外方法。否则,它与类本身一样是模块的一个特性,因为任意代码可能需要捕获异常(即使它从不由类方法以外的任何东西引发),并且应该因此,应在模块级别定义。