我在Python中遇到了一个非常奇怪的行为,这种行为并不一致。为什么我在Python上得到不一致的异常?
...
except IOError as msg:
sys.exit("###ERROR IOError: %s" % (msg))
通常这会得到我的消息,如:
###ERROR IOError: [Errno 13] Permission denied: 'filename'
在相同的情况下,上面的代码是给我一个tuple
,而不是正确的错误信息。
###ERROR IOError: (13, 'Permission denied')
这是很奇怪的,因为在所有情况下的例外来自同一蟒蛇方法,codecs.open(...)
什么让我不知道更多关于此的是,如果我删除处理异常将达到与上水平正确的文本(完整的错误信息),永远!
except IOError as msg:
print(msg)
raise msg
上例将总是打印一个完整的消息,如IOError: [Errno 13] Permission denied: u'filename'
。
为什么会发生这种情况,如何防止这种情况发生,我不想给用户提供不完整的错误消息。
我想在测试文件中重现此行为,但我无法在项目外重现此操作。
我怀疑这跟sys.exit()
的用法有关,因为print(msg)
会给出好的结果,但是sys.exit
不会。