如何在python中指定Exception参数?

时间:2015-08-26 14:30:53

标签: python exception-handling raise

创建例外时如何设置参数?我在哪里可以找到每个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没有谈论异常参数。

1 个答案:

答案 0 :(得分:1)

查看您为FileNotFoundError链接的网页,它确实说它是OSError的子类,其中包含签名

OSError(errno, strerror[, filename[, winerror[, filename2]]])

可以合理推断子类构造函数具有相同的签名。