gpt4 book ai didi

Python:ValueError 和 Exception 之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 22:08:53 25 4
gpt4 key购买 nike

我试图了解引发 ValueError 和异常之间的区别。我在相同的代码(甚至在同一个分支)中都尝试过,结果是一样的——我收到了一条错误消息。

我已经在 SO 上对这个问题进行了研究,但没有找到关于这个的讨论。然后我阅读了异常的文档,发现了以下definition的值错误:

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。您可以决定只捕获 ValueErrorException,这就是异常继承的目的。

在这个例子中:

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

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

在这个例子中:

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

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

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

(根据您的编辑编辑答案:)当您引发异常时:您正在创建一个 Exception 的实例,它将被 future 的 except ValueError:语句。消息是不同的,因为异常的表示(打印时)包括异常类名。

关于Python:ValueError 和 Exception 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com