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

发布于 2021-01-29 14:58:14

这个问题已经在这里有了答案

8年前关闭。

可能重复:

应该在Python中的错误/非法参数组合上引发哪个异常?

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

来自python文档:

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

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

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

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

关注者
0
被浏览
92
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看