同j**a一樣,在python中也有try...except...finaly的錯誤處理機制
try:
print('try...')
r=5/0程式設計客棧
print('result:',r)
except zerodivisionerror as e:
print('except',e)
finally:
print('finally....')
print('end')
比如上面這串**,因為被除數不能為0所以在try中會出現錯誤,而出現錯誤之後,result是不會列印出來的,而是直接跳轉到except中並列印出錯誤資訊,執行完except之後,如果有finally語句,就一定會執行完,所以無論有沒有finally都會執行。
結果為:
try...
excnoskjtfzzwept: division by zero
finally...
end這裡出現的錯誤是zerodivisionerror錯誤,python中還有很多的錯誤,比如valueerror錯誤,所以,在這個錯誤機制中我們可以設定多個except語句來捕捉不同的錯誤,比如,
try:
print('try...')
r = 10 / int('a')
print('result:',程式設計客棧 r)
except valueerror as e:
print('valueerror:', e)
except zerodivisionerror as e:
print('zerodivisionerror:', e)
finally:
print('finally...')
print('end')
因為多了乙個int()函式,所有有可能出現值錯誤,接著,你也可以在except後面程式設計客棧加乙個else函式來列印無錯誤來提醒自己。
可以看出,其實和j**a一樣,錯誤都是繼承類,他們的父類都為baseexception,所以,如果寫了多個except語句但是裡面包含父子類,那麼只會被父類給捕獲:
python錯誤處理還可參考:
Python 錯誤處理
當我們認為某些 可能會出錯時,就可以用try來執行這段 如果執行出錯,則後續 不會繼續執行,而是直接跳轉至錯誤處理 即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。例 a b traceback most recent call l...
Python編碼錯誤處理
在將字串寫入檔案時,執行f.write str 後台總是報錯 unicodeencodeerror ascii codec can t encode character u u6211 in position 0 ordinal not in range 128 即ascii碼無法被轉換成unico...
python 錯誤處理 assert
assert是斷言的意思,解釋為 我斷定這個程式執行之後或者之前會有這樣的結果,如果不是,那就扔出乙個錯誤。語法 assert expression arguments assert 表示式 引數 舉例 def foo s n int s assert n 0,n is zero return 10...