2017-03-04 105 views
0

表達運行下面的代碼:終於在蟒蛇

click here

我得到了一個輸出:

3 OK 6確認哎呀確定確定

我不明白他爲什麼打印粗體呢?他甚至沒有進入循環。

我想獲得深入理解異常情況如何,最後特別適用。

在此先感謝!

+1

你不應該在圖像中顯示你的代碼。幫助你很難,因爲任何試圖幫助你的人都需要手工編寫你的代碼。 – elbaulp

+2

在問題本身**中不包括代碼**(但僅在鏈接後面)實際上滿足缺少接近的條件-MCVE。根據規則的措辭:*尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包括所需的行爲,特定的問題或錯誤以及在問題本身中重現它的最短代碼* *。* –

回答

1

代碼finally塊在離開try-catch塊之前總是執行。即使發現異常,finally塊中的代碼也會執行。

對於蟒exception handling詳細的解釋,請參見python 3 documentation

0

official spec

如果最後存在時,它指定一個「清除」處理程序。 try子句被執行,包括任何except和else子句。如果任何一個條款發生異常並且沒有被處理,則異常被臨時保存。 finally子句被執行。如果有一個保存的異常,它會在finally子句結尾處重新提出。如果finally子句引發另一個異常,則將保存的異常設置爲新異常的上下文。如果最後條款執行退貨或break語句,保存異常被丟棄:

在循環的第四次迭代所以會發生什麼是number設置爲"a",當你試圖將其轉換爲int異常被提出。由於內部try塊中沒有匹配的except,所以異常被保存,finally塊被執行,其給出第四個ok輸出,然後保存的異常被重新加載並被外部try塊捕獲。