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:语句之外,它将被过滤掉.消息是不同的,因为异常的表示(打印时)包括异常类名称.

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...