1. 程式人生 > >python中的異常處理機制

python中的異常處理機制

異常:程式執行過程中由外部問題(硬體錯誤,輸入錯誤)引起的異常事件。

語法:

try:
    <語句>        
except <名字>:#異常1名字
    <語句>         #發生異常後執行的語句
else:

    <語句>        #沒有發生異常時執行的語句

try的工作原理是,當開始一個try語句後,python就在當前程式的上下文中作標記,這樣當異常出現時就可以回到這裡,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句裡發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程式的最上層(這樣將結束程式,並列印預設的出錯資訊)。

如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。

示例:

開啟一個不存在的檔案,會報fileNotFoundError


用try語句捕獲這個異常,


else語句是在沒有異常的情況下執行的


拓展:

FileNotFoundError本質是一個異常類。

所有的異常,本質都是一個類。

異常類的樹形表如下:


解讀一下就是,FileNotFoundError的父類是OSError,OSError的父類是Exception類(大多數異常類的父類都是Exception),而終極boss是BaseException類(再往上就是Object類了)

明白這一點的意義有兩個:

第一:當你想捕獲一個異常,又不確定會遇到什麼異常的時候,可以直接except Exception,因為按照類的繼承原則,這條語句可以接收所有以它為父類的異常。

第二:你可以自己寫一個異常類了。

 

定製異常瞭解一下~


定義一個類,繼承Exception,它就成了異常類。

呼叫過程給了一個簡單的示範,當檔案不存在時,丟擲TestException異常,然後在下面捕獲,進行相應操作就可以。

#每日雞湯:任何語言都只是一個工具,一個過程,最後指引你的是一種博大的文化#