直接用代碼執行流程來解釋吧。
代碼清單1(try、except、finally):
try:
print 'try...'
r = 10 / 0
print 'result:', r
except ZeroDivisionError, e:
print 'except:', e
finally:
print 'finally...'
print 'END'
執行流程:先執行try語句塊, 當執行出錯時,跳出try語句塊, 執行except語句塊,執行完except語句塊之後, 如果有finally語句塊,則執行。
代碼清單2(try、except、else、finally):
try:
print 'try...'
r = 10 / int('a')
print 'result:', r
except ValueError, e:
print 'ValueError:', e
except ZeroDivisionError, e:
print 'ZeroDivisionError:', e
else:
print 'no error!'
finally:
print 'finally...'
print 'END'
執行流程:如果 沒有錯誤發生,則try執行完畢, 不執行except,繼續執行else語句塊。
參考文獻:
1.