try:
#statement 1
#statement 2
except Exception, err:
print err
pass
這可能是很微不足道,但我從來沒有真正想過這個問題到現在爲止,我發現自己不能夠回答以下問題:Python的嘗試,除了
是否語句2被如果執行聲明1中出現錯誤?
在語句1和語句2出現錯誤的情況下,Exception如何處理?在上面的代碼中打印出哪個錯誤?都?
try:
#statement 1
#statement 2
except Exception, err:
print err
pass
這可能是很微不足道,但我從來沒有真正想過這個問題到現在爲止,我發現自己不能夠回答以下問題:Python的嘗試,除了
是否語句2被如果執行聲明1中出現錯誤?
在語句1和語句2出現錯誤的情況下,Exception如何處理?在上面的代碼中打印出哪個錯誤?都?
答案對您的兩個問題都是「否」。
只要一個錯誤是在try/except
塊拋出,try
部分立刻退出:
>>> try:
... 1/0
... print 'hi'
... except ZeroDivisionError, e:
... print 'error'
...
error
>>>
正如你看到的,代碼不會繼續執行print 'hi'
一部分,儘管我做了一個except
爲了它。
您可以閱讀更多here。
1)是否如果錯誤在聲明中 1提出聲明2被執行?
不,語句2不執行
2)如何異常處理的情況下將錯誤上調 兩個語句1和語句2?上面代碼中的 打印出哪個錯誤?都?
唯一的語句1有一定機率產生一個錯誤,見上面,
注意:如果你想聲明2始終執行,你可以使用finally
與嘗試/除
在一個異常被提出的控制離開try
區塊在異常被引發的時候被提供給合適的except
區塊。如果語句1拋出異常,語句2將不會執行。
這也回答了你的第二個問題:你描述的場景不可能發生。
1)如果語句1中出現錯誤,語句2是否被執行?
號異常將被提出和捕獲。 據我瞭解蟒蛇將向上移動堆棧和呼叫者查找異常處理程序
2)如何異常處理在引發錯誤兩種說法1和2陳述的情況下?在上面的代碼中打印出哪個錯誤?都?
語句2將不會被運行,因此沒有例外將提高它
從try
塊中的任何異常都將被捕獲。這就是爲什麼對於所有try
/except
子句,將try子句限制爲必需的絕對最小代碼量。再次,這避免了掩蓋錯誤。
從Python文檔:
如果try子句執行過程中發生異常,該條款的其餘部分被跳過。然後,如果它的類型匹配以except關鍵字命名的異常,則會執行except子句,然後在try語句之後繼續執行。
因此,一旦發生錯誤,它會跳到異常
+1引用文檔。 – cdhowie
用於您的問題,這可能有助於使「點擊」在你的腦海:如果有一個錯誤在陳述1中,你怎樣才能保證陳述2會做正確的事情? – Izkata
@Izkata touche。 – ealeon
你從來沒有想過只是自己嘗試一下嗎? – poke