我在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
不會。