1. 程式人生 > >孤荷凌寒自學python第三十二天python的程式碼塊中的異常的捕獲

孤荷凌寒自學python第三十二天python的程式碼塊中的異常的捕獲

孤荷凌寒自學python第三十二天python的程式碼塊中的異常的捕獲

(完整學習過程螢幕記錄視訊地址在文末,手寫筆記在文末)

 

今天簡單瞭解了Python的錯誤陷阱,瞭解到其與過去學過的其它語言非常類似,也是使用try……catch……語句塊來實現的。

在程式碼編寫過程中,由於人的思維的不夠嚴密,再優秀的程式設計師也無法保證自己一點錯誤都不出,因此,程式中的錯誤程式碼是經常存在的。

在程式執行中,由於引數和環境的改變,運算過程中發生異常也是常見的情況。

但如果程式在中途出現異常錯誤,而無法自行解決時,就會造成程式整個中斷執行,這種情況叫做程式的健壯性太差(不夠健康,輕而易舉就掛掉了)。

於是幾乎所有的程式語言都有一套異常捕獲和處理的機制,簡單說就是一套錯誤陷阱,我們主動安排錯誤的陷阱,通過錯誤陷阱的程式碼捉住錯誤,然後處理掉錯誤,這就使程式的健壯性大大提高了。

python的異常捕獲與處理語句的格式如下:

try:

       此程式碼塊是執行正常的需要執行的操作。

except 錯誤類別名(異常類名)[,可以是多個錯誤類別名的列表]:

       針對列出的錯誤類別或異常類名而捕獲到的錯誤異常進行處理的程式碼塊。

except (多個異常類名的列表) as e:

       e代表列表中的多個異常類名對應的具體異常物件實體。

     在此程式碼真中直接對e進行操作處理即可。

except:

       因為沒有指定要捕獲的異常類名。

       則可以捕獲所有異常類的實體物件,

       因此稱為全捕捉。

       此處的程式碼塊就處理所有異常。

else:

       如果整個程式塊完全沒有發生錯誤異常,

       就會執行此處的程式碼塊。

finally:

       不管前面的程式碼情況如何,

       此程式碼塊是一定會被執行的。

 

測試:

try:

    print('hello world!')

except SystemError as e:

    print("一般系統錯誤\n",e)

except AttributeError as e:

    print("引用屬性錯誤\n",e)

except IOError as e :

    print("輸入輸出錯誤\n",e)

except IndexError as e:

    print("索引錯誤\n",e)

except KeyError as e:

    print("不存在鍵\n",e)

except NameError as e:

    print("引用或宣告錯誤\n",e)

except ValueError as e:

    print("引數值錯誤\n",e)

except:

    print("出了其它錯了")

else:

    print("繼續執行")

finally:

    print("執行收尾工作")

 

執行結果:

hello world!

繼續執行

執行收尾工作

本次執行,沒有捕獲任何錯誤異常。

繼續測試:

try:

    print(hello world!)

except SystemError as e:

    print("一般系統錯誤\n",e)

except AttributeError as e:

    print("引用屬性錯誤\n",e)

except IOError as e :

    print("輸入輸出錯誤\n",e)

except IndexError as e:

    print("索引錯誤\n",e)

except KeyError as e:

    print("不存在鍵\n",e)

except NameError as e:

    print("引用或宣告錯誤\n",e)

except ValueError as e:

    print("引數值錯誤\n",e)

except:

    print("出了其它錯了")

else:

    print("繼續執行")

finally:

    print("執行收尾工作")

執行結果:

出了其它錯了

執行收尾工作

 

——————————

今天整理的學習筆記完成,最後例行說明下我的自學思路:

根據過去多年我自學各種程式語言的經歷,認為只有真正體驗式,解決實際問題式的學習才會有真正的效果,即讓學習實際發生。在2004年的時候我開始在一個鄉村小學自學電腦 並學習vb6程式語言,沒有學習同伴,也沒有高師在上,甚至電腦都是孤島(鄉村那時還沒有網路),有的只是一本舊書,在痛苦的自學摸索中,我找到適應自己零基礎的學習方法:首先是每讀書的一小節就作相應的手寫筆記,第二步就是上機測試每一個筆記內容是否實現,其中會發現書中講的其實有出入或錯誤,第三步就是在上機測試之後,將筆記改為電子版,形成最終的修訂好的正確無誤的學習筆記。

通過反覆嘗試錯誤,在那個沒有分享與交流的黑暗時期我摸黑學會了VB6,爾後接觸了其它語言,也曾聽過付費視訊課程,結果發現也許自己學歷果然太低,就算是零基礎的入門課程,其實也難以跟上進度,講師的教學多數出現對初學者的實際情況並不瞭解的情況,況且學習者的個體也存在差異呢?當然更可怕的是收費課程的價格往往是自己難以承受的。

於是我的所有程式設計學習都改為了自學,繼續自己的三步學習筆記法的學習之路。

當然自學的最大問題是會走那麼多的彎路,沒有導師直接輸入式的教學來得直接,好在網路給我們帶來無限搜尋的機會,大家在網路上的學習日誌帶給我們共享交流的機會,而QQ群等交流平臺、網路社群的成立,我們可以一起自學,互相批評交流,也可以獲得更有效,更自主的自學成果。

於是我以人生已過半的年齡,決定繼續我的程式設計自學之路,開始學習python,只希望與大家共同交流,一個人的獨行是可怕的,只有一群人的共同前進才是有希望的。

誠摯期待您的交流分享批評指點!歡迎聯絡我加入從零開始的自學聯盟。

這個時代網際網路成為了一種基礎設施的存在,於是本來在孤獨學習之路上的我們變得不再孤獨,因為網路就是一個新的客廳,我們時刻都可以進行沙龍活動。

非常樂意能與大家一起交流自己自學心得和發現,更希望大家能夠對我學習過程中的錯誤給予指點——是的,這樣我就能有許多免費的高師了——這也是分享時代,社群時代帶來的好福利,我相信大家會的,是吧!

 

根據完全共享的精神,開源互助的理念,我的個人自學錄製過程是全部按4K高清視訊錄製的,從手寫筆記到驗證手寫筆記的上機操作過程全程錄製,但因為4K高清檔案太大均超過5G以上,所以無法上傳至網路,如有需要可聯絡我QQ578652607對傳,樂意分享。上傳分享到百度網盤的只是壓縮後的720P的視訊。

 

我的學習過程錄影百度盤地址分享如下:(清晰度:1280x720)

連結:https://pan.baidu.com/s/1HO9ZRA46_Fo_RvLhT7Ybow 密碼:jcsw

 

Bilibili:

https://www.bilibili.com/video/av37644283/

 

喜馬拉雅語音筆記:

https://www.ximalaya.com/keji/19103006/143326261

圖片