有沒有辦法檢查哪個變量賦值方法拋出異常?例如:檢查哪個變量拋出異常
a = '\xa1'
b = 'normal string'
try:
c = b.encode('ascii')
d = a.encode('ascii')
except Exception as e:
print "error thrown for input: %s" % <figure out which variable threw error>
在這種情況下,我想輸出說「錯誤拋出輸入:d」,而如果我切換變量,使得C = a.encode(「ASCII」),則輸出會說「輸入錯誤:c」。這是可能的,還是我需要將變量賦值分成兩個不同的try塊?
另外,出於好奇,讓我們假設它是5個,10個或更多的變量,不容易用for循環迭代。那會是5-10個不同的嘗試塊嗎?或者你會把它們堆放在一個列表中,只是爲了for循環?
好了,所以我相信我在試圖簡化我的問題措辭不當。我知道這個變量不會拋出異常,但我想知道哪一行執行了這個操作,並輸出比給出的用戶更友好的消息。我有一個系統,用戶應該輸入數據,如果他們有錯誤,它會顯示一條消息來解決問題。像這樣的消息不會幫助他們那麼多,這就是爲什麼我要確定哪一個會給出異常以用戶友好的消息輸出,以及如果我真的需要多個try/catch塊。 – 2015-02-09 15:57:33
@JarrettPhillips你可以檢查'e.args'。我編輯了我的答案。 – 2015-02-09 16:10:55
這非常有用,雖然我不喜歡它如何不直接告訴我它應該分配哪個變量,但我可以將e.args [1]與輸入進行比較,以查看它是哪個變量。 – 2015-02-09 16:57:02