2017-05-25 61 views
0

我有以下錯誤信息:的Python內置的例外 - 如何讓例外領域

type object 'SomeClass' has no attribute 'some_class_field' 

唯一的例外是類型「AtrributeError」的。

有什麼辦法來改變錯誤消息:

Provider class 'SomeClass' has no field 'some_class_field' 

我想這些參數保存在蟒蛇異常類,我認爲有可能是以下類型的解決方案:

try: 
    # some code 
except AtrributeError as ae: 
    print("Provider class '{0}' has no field '{1}'").format(ae.type_object, ae.attribute)) 
    exit(1) 
+1

您總是可以從異常對象中提取值。但是,爲什麼你需要自定義消息? –

+0

@Jim Fasarakis Hilliard我想知道如果沒有定義我自己的例外,這是否會發生,這就是爲什麼我問。另外我認爲對於不用python編寫的人來說,這會更好理解。 –

+1

不要定義你自己的例外;從'ae.args [0]'得到異常信息並提取你需要的部分。然後將它們打印出來(使用'.format'或其他你需要的東西)。 –

回答

1

只是你不能這樣做。

,如果你不喜歡一遍你會異常喜歡這個

print("Provider class '{0}' has no field '{1}'").format(ae.type_object, ae.attribute) 
AttributeError: 'exceptions.AttributeError' object has no attribute 'type_object' 

從吉姆·希利亞德Fasarakis評論:

我們不能訪問一樣,因爲AE只有消息的關鍵。它沒有 有任何其他的關鍵你想要訪問。不要定義你自己的例外 ;從ae.args [0]和 獲取異常消息提取您需要的部分。然後將其打印出來(使用.format或 任何你需要的)。 - Jim Fasarakis Hilliard

+0

請將Jim Fasarakis Hilliard評論的主意添加爲簡短的說明文本,我會接受您的回答。這是爲了更全面地關閉該主題,請提前致謝。 –

+0

@ stefan.stt謝謝。我更新我的答案。請檢查 –