2016-06-07 47 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)只給出消息。

相關問題