在python中使用默认消息引发内置异常

bow*_*bow 23 python exception

我正在尝试实现一个方法,只要某个目录不存在就会返回错误.

raise OSError("Directory does not exist.")但是,我想使用OSError中的builtint错误消息,而不是这样做OSError: [Errno 2] No such file or directory:.这是因为我在方法调用的开头提高异常,而不是稍后(它将从python调用相同的消息,没有任何必要raise).

有什么指针吗?(手动OSError("[Errno 2] No such file or directory: ")除外)

unu*_*tbu 27

import os

try:
    open('foo')
except IOError as err:
    print(err)
    print(err.args)
    print(err.filename)    
Run Code Online (Sandbox Code Playgroud)

产生

[Errno 2] No such file or directory: 'foo'
(2, 'No such file or directory')
foo
Run Code Online (Sandbox Code Playgroud)

所以,生成OSError一个类似的消息使用

raise OSError(2, 'No such file or directory', 'foo')
Run Code Online (Sandbox Code Playgroud)

  • 使用`errno`模块和`os.strerror`中的错误名称将它们转换为本地化的消息字符串比硬编码值更可靠:`OSError(errno.ENOENT,os.strerror(errno.ENOENT),filename) ` (6认同)

jco*_*ado 12

要获取给定错误代码的错误消息,您可能希望使用os.strerror:

>>> os.strerror(2)
'No such file or directory'
Run Code Online (Sandbox Code Playgroud)

此外,您可能希望使用errno模块对这些错误使用标准缩写:

>>> errno.ENOENT
2
>>> os.strerror(errno.ENOENT)
'No such file or directory'
Run Code Online (Sandbox Code Playgroud)