Python:ValueError和Exception之间的区别?

前端之家收集整理的这篇文章主要介绍了Python:ValueError和Exception之间的区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解提出ValueError和Exception之间的区别.我已经尝试了两个相同的代码(即使在同一个分支),结果是相同的 – 我收到了一条错误消息.

我在SO上对这个问题进行了研究,但没有对此进行讨论.然后我阅读了异常的文档,发现了以下definition的ValueError:

Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value,and the situation is not described by a more precise exception such as IndexError.

据我了解,Exception是一个更通用的术语,ValueError可以应用于某些特定情况.但由于提高两者的结果是相同的,我想了解,区分ValueError和Exception的实际意义是什么. Python版本应该在这里不相关.谢谢!

编辑:
感谢您的回答,我得到了它,try-exception构造中两个术语之间的区别是什么.但是,如果只是提高它们,它们如何区别,而不是除外?

raise Exception('blah')

raise ValueError('blah')

回答@PeterWood:在这两种情况下我都得到错误消息“blah”,但在一种情况下它是“Exception:blah”,在第二种情况下:“ValueError:blah”.我认为在这种情况下他们两者之间没有实际区别.

解决方法

ValueError继承自Exception.您可以决定仅捕获ValueError或Exception,这是异常继承的用途.

在这个例子中:

try:
    a=12+"xxx"
except Exception:
    # exception is trapped (TypeError)

异常被捕获,所有异常(除了BaseException异常)都被except语句捕获.

在另一个例子中:

try:
    a=12+"xxx"
except ValueError:
    # not trapped

这里,异常没有被捕获(TypeError不是ValueError并且不继承)

您通常使用特定的异常来仅捕获可能发生的异常(最好的例子是处理文件时的IOError),并保留其余的未处理的异常.捕获所有异常的危险在于获得一段不会崩溃但什么都不会崩溃的代码.

(当你引发异常时编辑答案以响应你的编辑:):你正在创建一个Exception实例,除了ValueError:语句之外,它将被过滤掉.消息是不同的,因为异常的表示(打印时)包括异常类名称.

猜你在找的Python相关文章