将异常错误转换为字符串

时间:2016-06-07 16:01:36

标签: python

我想处理来自异常的错误消息,但似乎无法将其转换为字符串。我已经阅读了os库手册页,但有些东西没有点击给我。

打印错误有效:

try:
    os.open("test.txt", os.O_RDONLY)
except OSError as err:
    print ("I got this error: ", err)

但这不是:

try:
    os.open("test.txt", os.O_RDONLY)
except OSError as err:
    print ("I got this error: " + err)

TypeError: Can't convert 'FileNotFoundError' object to str implicitly

2 个答案:

答案 0 :(得分:18)

来自the docs for print()

  

所有非关键字参数都转换为字符串,如str(),并写入流

因此,在第一种情况下,您的错误由print内置转换为字符串,而当您尝试将错误连接到字符串时,不会发生此类转换。因此,要复制将消息和错误作为单独参数传递的行为,您必须将错误转换为str()的字符串。

答案 1 :(得分:16)

根据我的经验,你想要的是repr(err),它将返回异常类型和消息。

str(err)仅提供消息。