当前位置: 首页 > 面试题库 >

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

罗金林
2023-03-14
问题内容

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

8年前关闭。

可能重复:

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

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

来自python文档:

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

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

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

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


问题答案:

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

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



 类似资料:
  • 本文向大家介绍Python中应该使用%还是format来格式化字符串,包括了Python中应该使用%还是format来格式化字符串的使用技巧和注意事项,需要的朋友参考一下 %还是format 1、皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题。

  • 当我比较,但是当我使用。 我在pythonshell中做了一个测试,确定两者都是有效语法,但我的编辑器似乎在说是首选。 情况是否如此,如果是,原因何在?

  • 问题内容: 我使用Ubuntu进行开发和部署,并且需要创建一个隔离的环境。 我正在考虑为此目的使用Vagrant或Docker。优缺点是什么,或者这些解决方案相比如何? 问题答案: 如果您的目的是隔离,那么我认为Docker是您想要的。 Vagrant是虚拟机经理。它允许您编写虚拟机配置和配置脚本。但是,它仍然是虚拟机,取决于VirtualBox(或其他),具有巨大的开销。它要求您拥有一个巨大的硬

  • 问题内容: 我有一个只包含字段而没有方法的类,如下所示: 这可以很容易地翻译成字典。该类对于将来的添加更加灵活,使用可以更快。那么使用dict会有好处吗?字典会比全班更快吗?并且比具有插槽的课程快吗? 问题答案: 你为什么要把它当作字典?有什么好处?如果您以后要添加一些代码,会发生什么?您的代码会去哪儿? 类用于捆绑相关数据(通常是代码)。 字典用于存储键- 值关系,其中通常键都是同一类型,并且所

  • 如何在swift 4中对字符串进行子串。 我想转换: “你好,世界!” 进入: “你好”

  • 问题内容: 在python中,是否有内置的方法对字符串执行readline()?我有大量的数据,只想剥离前几行而对整个字符串不做split()。 假设的例子: 我希望这导致: 我知道编写一个可以做到这一点的类非常容易,但是我正在寻找内置的东西。 编辑:Python v2.7 问题答案: Python 2 您可以使用StringIO: 如果性能很重要,请确保使用cStringIO。 Python 3