小编典典

python:我应该使用ValueError还是创建自己的子类来处理无效字符串?

python

我已经看过python的内置异常,而且看起来唯一接近的是ValueError。

来自python文档:

异常ValueError:
当内置操作或函数接收到具有正确类型但值不适当的参数时发生,并且这种情况未由诸如IndexError之类的更精确的异常描述。

是否应该创建ValueError的子类,例如InvalidFormatException?

(我的特殊情况是罗马数字字符串格式不正确,但还有许多其他适用情况。)

编辑:似乎ValueError是正确的选择,现在的问题是直接使用ValueError还是对其进行子类化。


阅读 181

收藏
2021-01-20

共1个答案

小编典典

ValueError非常适合您的情况。只需记住这一点,并记住您可以将有用的消息指定为参数,从而将其与其他类型的ValueError区别开来。

但是,除非定义了一个很好的理由只想捕获该特定错误,而又避免捕获任何其他ValueError,否则我不会通过定义子类来使代码更复杂。许多应用程序具有数十种“特殊”错误条件,但是,如果它们还定义了针对每个案例的子类,则代码将很快变得难以维护,并且任何尝试使用该例程的人都会因意外的新异常而不断感到惊讶。

2021-01-20