1. 程式人生 > >python異常捕捉以及處理

python異常捕捉以及處理

內部 一個 使用 理解 總結 final 比較 exce 不出

看標題覺得高大上,好像能處理所有的異常。但是,事實是只能按照字面的意思來理解這一段話。

眾所周知寫代碼哪有不出bug的?

那麽出現了bug 我們不想讓程序因為bug的存在而退出。那麽要怎麽做呢?

今天來寫一下這個。

try:

  代碼

except exception:

  代碼

註意:except exception 會捕捉所有的異常,簡稱:萬能異常。而我所知道的異常有: 索引異常 變量名字異常 叠代異常 無法調用異常 。。。。。等等有很多異常

但是一旦使用萬能異常就會包庇所有的其它異常。正常的使用方式是應該把萬能異常寫在捕捉異常的最下方。 except 去捕捉你知道或者預料要出現的異常。這樣寫的好處是方便你改bug

我們的異常處理應該是小段小段的使用,方便代碼的調試。

except exception as a: print(a) 可以打印出異常的類型

技術分享圖片

為了偷懶,so我就沒有打代碼,直接粘貼過來圖片了, 捕捉異常之後可以使用else: else的作用是假如這個程序沒有報錯執行else內的代碼。

舉例:我們發送郵件的時候會存在發送的郵箱號碼不能使用,或者網絡錯誤無法發送。我們不知道是否這個郵件發送出去了。那麽else就可以用在捕捉異常之後,意思是代碼沒有發生異常使用else內的代碼!

技術分享圖片

finally 的作用比較神奇,不管是代碼無異常運行還是異常運行都會運行到finally內 ,那麽它的作用比較神奇。它在函數內部使用,即使return 也會運行finally內的代碼。

粘貼一發老師寫的總結:

# 程序一旦發生錯誤,就從錯誤的位置停下來了,不在繼續執行後面的內容
# 使用try和except就能處理異常
#try是我們需要處理的代碼
#except 後面跟一個錯誤類型 當代碼發生錯誤且錯誤類型符合的時候 就會執行except中的代碼
#except支持多分支
#有沒有一個能處理所有錯誤的類型 : Exception
# 有了萬能的處理機制仍然需要把能預測到的問題單獨處理
# 單獨處理的所有內容都應該寫在萬能異常之前
# else : 沒有異常的時候執行else中的代碼
# finally : 不管代碼是否異常,都會執行
# finally和return相遇的時候 依然會執行
# 函數裏做異常處理用,不管是否異常去做一些收尾工作

python異常捕捉以及處理