羣裏朋友今天問了個問題,當時自己沒注意,簡單跑了下代碼,發現真的很奇妙
【1】 情況1:
try:
global r
<span style="color:#FF0000;">print 'try...'</span>
r = 10 / 0
print 'result:', r
except:
<span style="color:#FF0000;"> print 'end:'</span>
<span style="color:#FF0000;">print 'finally...'
print "E"</span>
【2】情況2:
try:
global r
<span style="color:#FF0000;">print 'try...'</span>
r = 10 / 0
print 'result:', r
except:
<span style="color:#FF0000;">print 'end:'</span>
finally:
<span style="color:#FF0000;">print 'finally...'</span>
<span style="color:#FF0000;">print "E"</span>
【3】情況3
try:
global r
<span style="color:#FF0000;">print 'try...'</span>
r = 10 / 0
print 'result:', r
except:
<span style="color:#FF0000;">print 'end:'</span>
<span style="color:#3333FF;">quit()</span>
finally:
<span style="color:#FF0000;">print 'finally...'</span>
print "E"
【4】情況4
try:
global r
<span style="color:#FF0000;">print 'try...'</span>
r = 10 / 0
print 'result:', r
except:
<span style="color:#FF0000;">print 'end:'</span>
quit()
print 'finally...'
print "E"
由此總結, try..except..finally 的執行結構上
定義try部分 程序本該執行的部分
except 用作錯誤檢測 一旦try部分出錯,try中出錯語句後面部分全部不執行
跳到except部分
而finally部分是無條件執行的,無論except中發生了什麼,即使是退出請求quit()
(如果不使用finally部分,當except中出現quit(),程序自動退出