【发布时间】:2015-08-26 14:30:53
【问题描述】:
创建异常时如何设置参数?在哪里可以找到每个 Exception 子类可用的参数列表?最佳做法是什么?
例如,如果我知道一个文件不存在,我该如何引发FileNotFoundError(missing_file) 异常?
这显示了FileNotFoundError异常的成员列表:
>>> [a for a in dir(FileNotFoundError) if a>'a']
['args', 'characters_written', 'errno', 'filename', 'filename2', 'strerror', 'winerror', 'with_traceback']
这说明在创建异常时可以设置一些参数:
>>> FileNotFoundError(1,2,3,4,5).filename
3
>>> FileNotFoundError(1,2,3,4,5).filename2
5
这表明这些论点是有意义的:
>>> raise FileNotFoundError(1,2,3,4,5)
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
raise FileNotFoundError(1,2,3,4,5)
FileNotFoundError: [WinError 4] 2: 3 -> 5
所以我知道参数在那里,可以设置并且可以使用。但我找不到任何关于它的文档。
raise 文档、FileNotFoundError 文档或 this post 不要谈论异常参数。
【问题讨论】:
-
不是一个完整的答案,但有一个例外列表here。
-
@CasualDemon 这是我问题中的链接之一
-
啊,错过了,以为它只是代码块。这些成员实际上是在
OSError中定义的(但不在Exception或BaseException中),而不仅仅是FileNotFoundError,并且可以像this 回答显示的那样正常设置和访问。 -
@CasualDemon 我的问题中的
FileNotFoundError只是一个例子。我正在寻找一种通用方法来解决所有内置异常的所有参数。它们是内置的,有文档的,但没有参数文档。您引用的帖子上的第三个答案试图解决我的答案,但仅适用于OSError,并且没有解释论点。
标签: python exception-handling raise