gpt4 book ai didi

python - 引发 Exception 类和 Exception 实例之间有区别吗?

转载 作者:太空狗 更新时间:2023-10-29 18:24:29 26 4
gpt4 key购买 nike

在 Python 中,我可以通过两种方式引发异常

raise ValueError
raise ValueError()

除了可以在后一种情况下提供异常消息之外,这两种样式之间有什么根本区别吗?我应该选择其中之一吗?

最佳答案

来自 the doc两者都有效(没有意外行为):

The sole argument to raise indicates the exception to be raised. This must be either an exception instance or an exception class (a class that derives from Exception).

在我看来,如果您希望它保存数据,则需要使用实例,无论是消息(如您​​所说)还是自定义数据或其他任何内容。

正如@alko 所说,如果您不提供实例,它将实例化一个没有参数的实例。

如果您需要强制参数,这将不起作用:

>>> class MyError(Exception):
... def __init__(self, message, data=None):
... self.msg = message
... self.data = data or {}
...
>>> raise MyError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() takes at least 2 arguments (1 given)

关于python - 引发 Exception 类和 Exception 实例之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768515/

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