我在 Python 中遇到了一个很奇怪的行为,一种不一致的行为。
...
except IOError as msg:
sys.exit("###ERROR IOError: %s" % (msg))
通常这会给我这样的消息:
###ERROR IOError: [Errno 13] Permission denied: 'filename'
在同样的情况下,上面的代码给了我一个tuple
而不是一个正确的错误消息。
###ERROR IOError: (13, 'Permission denied')
这很奇怪,因为在所有情况下,异常都来自同一个 python 方法,codecs.open(...)
更让我想知道的是,如果我删除处理,异常将始终以正确的文本(完整的错误消息)到达上层!
except IOError as msg:
print(msg)
raise msg
上面的示例将始终打印完整的消息,例如IOError: [Errno 13] Permission denied: u'filename'
.
为什么会发生这种情况以及如何防止这种情况发生,我不想向用户提供不完整的错误消息。
我想在测试文件中重现此行为,但我无法在项目之外重现此行为。
我怀疑这与使用的原因有关,sys.exit()
因为print(msg)
会产生良好的结果,但sys.exit
不会。