【问题标题】:Convert exception error to string将异常错误转换为字符串
【发布时间】:2016-10-07 15:19:48
【问题描述】:

我想处理来自异常的错误消息,但似乎无法将其转换为字符串。我已阅读 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

【问题讨论】:

    标签: python


    【解决方案1】:

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

    str(err) 只给出消息。

    【讨论】:

    • 这是一个更有用的答案,尽管它仅在您进行调试/不知道您要捕获什么时才有效。
    【解决方案2】:

    来自the docs for print()

    所有非关键字参数都像 str() 一样转换为字符串并写入流中

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

    【讨论】:

    • 因此将 err 包装在 str() 中就像在 str(err) 中一样有效。谢谢。
    • 问题在于它只“打印”错误消息而不是错误类型。我们如何在短代码中同时打印类型和消息,就像 Python 那样?
    • @HendyIrawan 多种方法,见stackoverflow.com/a/9824050/4686625
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2017-11-26
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多