如果给定的字符串与某些格式不匹配,会引发哪个异常?

时间:2010-10-28 22:47:40

标签: python exception-handling

这是对older question

的跟进

给定ISBN号,例如3-528-03851-5如果传入的字符串与格式X-XXX-XXXXX-X不匹配,我应该提出哪种异常类型?

3 个答案:

答案 0 :(得分:7)

举起ValueError

这几乎是说“你给了我一个没有意义的价值”的标准方式。例如:

>>> int("a")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: 'a'
>>> import shlex; shlex.split("'")
Traceback (most recent call last):
   ...
ValueError: No closing quotation

将此与TypeError进行对比,这是在类型不正确时引发的:

>>> d = {}
>>> d[{}]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'dict'

答案 1 :(得分:3)

我想我会在这个实例中创建一个异常类,因为它是一个非常特殊的异常类型。您可以非常轻松地扩展ValueError类:

class ISBNFormatException(ValueError):
    """Raised when an invalid ISBN format is found"""
    pass

答案 2 :(得分:2)

ValueError可能是最合适的选择。根据它的文档,它是一个值具有正确类型但价值不合适的时候。

http://docs.python.org/library/exceptions.html#exceptions.ValueError