python: Should I use ValueError or create my own subclass to handle invalid strings?
Possible Duplicate:
Which exception should I raise on bad/illegal argument combinations in Python?
我已经查看了Python内置的异常,唯一看起来很接近的是ValueError。
从python文档:
exception ValueError:
Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value, and the situation is not described by a more precise exception such as IndexError.
我应该创建ValueError的子类吗,比如InvalidFormatException?
(我的特殊情况是,如果罗马数字字符串格式不正确,但还有许多其他适用的情况。)
编辑:看起来ValueError是正确的选择,现在的问题是直接使用ValueError还是将其子类化。
但是,通过定义子类,我不会使代码变得更复杂,除非我有充分的理由只想捕获那个特定的错误,但避免捕获任何其他ValueErrors。许多应用程序都有许多"特殊"的错误条件,但是如果它们还定义了每种情况的子类,代码将很快变得不可维护,任何试图使用这些例程的人都会不断地被意外的新异常所震惊。
ValueError似乎合乎逻辑:
1 2 3 4 5 6 7 | In [1]: int('abc') --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython console> in <module>() ValueError: invalid literal for int() with base 10: 'abc' |
实际上,这取决于您是否希望(或需要)可以独立于调用代码期间可能发生的其他
我投票赞成创建一个唯一的子类,InvalidFormatException。
ValueError虽然是真的,但却是模糊的。
SuffiDimeFATExtExchange更具体,并直接绑定到您的问题。
用户可能会遇到这样的情况:他们所做的事情可能会导致两种错误。他们可以转换罗马数字,然后做一些数学运算。它们可能需要区分ValueError和InvalidFormatException。
我也支持这个案例的ValueError。我的2美分。
对。;-)