2016-06-07 27 views
8

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

回答

10

the docs for print()

所有非关键字参数将转换为像STR字符串()不并写入流

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

+5

因此,在str(err)中包装err在str()中工作。谢谢。 – dpetican

+0

是的,确切地说。别客气。 – miradulo

+0

问题是,它只是“打印”错误消息,而不是错误类型。我们如何在短代码中打印类型和消息,就像Python一样? –

-1

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

str(err)只给出消息。

相关问题