代码之家  ›  专栏  ›  技术社区  ›  Gordon Gustafson

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

  •  7
  • Gordon Gustafson  · 技术社区  · 16 年前

    可能重复:
    Which exception should I raise on bad/illegal argument combinations in Python?

    我查看了python的内置异常,唯一接近的是ValueError。

    异常值错误:

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

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

    编辑:看起来ValueError是正确的选择,现在的问题是直接使用ValueError还是将其子类化。

    6 回复  |  直到 9 年前
        1
  •  10
  •   Peter Hansen    16 年前

    ValueError 和你的案子很匹配。请记住,您可以指定一条有用的消息作为参数,以便将其与其他类型的ValueError区分开来。

        2
  •  4
  •   Ofri Raviv    16 年前

    In [1]: int('abc')
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    
    <ipython console> in <module>()
    
    ValueError: invalid literal for int() with base 10: 'abc'
    
        3
  •  4
  •   S.Lott    16 年前

    我赞成创建一个独特的子类InvalidFormatException。

    ValueError虽然是真的,但很模糊。

        4
  •  3
  •   Antoine P.    16 年前

    ValueError 调用代码期间可能发生的错误。它还取决于您是您的代码的唯一消费者还是供其他人使用;在后一种情况下,如果您定义了一些高级库特定的异常,这些人可以检查,这可能会对他们有所帮助。

        5
  •  -1
  •   Wim    16 年前

    是的。;-) ValueError 听起来像是最适用的内置类,并且有了它的子类,您似乎做得最好。这也是f.i。 '%q' % 1

        6
  •  -1
  •   Stefano Borini    16 年前

    我也支持此案例中的ValueError。我的2美分。

    推荐文章