将异常错误转换为字符串

dpe*_*can 23 python

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

打印错误有效:

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

但这不是:

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
Run Code Online (Sandbox Code Playgroud)

mir*_*ulo 21

来自文档print()

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

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

  • 因此,在str(错误)中将错误包装在str()中可以正常工作.谢谢. (8认同)
  • 问题是它只"打印"错误消息而不是错误类型.我们如何在短代码中打印类型和消息,就像Python一样? (3认同)

Hen*_*wan 20

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

str(err) 只给出了消息.