學好Python異常處理的四個關鍵詞與四種結構
以我自己的職業經歷來說,我情愿自己去針對一項重現寫代碼,也不愿意去承接別人的代碼。我想,這是大部分碼農的心聲吧。
這其中的原因有很多種,但讓人糟心的代碼的原因排第一位的肯定是追溯其的邏輯特別的困難,那排第二絕對是出了問題定位原因特別困難。
之所以會定位問題原因難,最根本的是代碼編寫者缺少的是“異常”處理思維。
1.語法格式
我們開始從Python的異常語法格式開始吧。

從上圖可以看到以下信息:
- 四個關鍵詞:try、except、else、finally;
- 支撐多異常監控。
其中,
- try 塊包含著可能引發異常的代碼;
- except 塊則用來捕捉和處理發生的異常;
- 如果 try 塊中沒有拋出異常,則執行 else 塊;
- finally 塊無論是否發生異常都會被執行;通常用來釋放 try 塊中申請的資源。
我們一直知道程序代碼中,有的關鍵詞是必須要的,有的是非必須的。根據上面語法格式,我沒可以問自己:是否可以有多重組合形式呢?
2.try... 一個 except 結構
還是以一個測試0 不能做除數的異常捕捉案例。具體代碼及執行效果如下圖:

代碼邏輯及執行結果:
- 接收鍵盤輸入的數字作為除數與被除數;
- try模塊中用兩個print語句來驗證是否執行除法運算;
- 由于z = x / y引發來異常,所以其后的print語句未被執行;
- except模塊調用Python中的系統異常BaseException,打印出異常信息。
3.try... 多個 except 結構
針對上述案例,我們可以進一步捕捉更多詳細的異常。如下圖:

4.try...except...else 結
再進一步的話,針對try正常執行后,通過else來控制一些語句塊的執行。見下圖:

5.try...except...finally 結構
最后,總是會碰到不管tyr還是Except的執行結果如何都要執行的語句塊,這是后finally就派上用場了。見下圖:

總結
- Python異常處理語法中出現四個關鍵詞(try、except、else、finally);
- 可以拆分出四種結構。