python 提供了try except語句捕獲並處理異常,該異常處理語句的基本語法結構如下:
try:
可能產生異常的**塊
except [(error1, error2, ...) [as e]]:
處理異常的**塊1
except [(error3, error4, ...) [as e]]:
處理異常的**塊2該格式中, 括起來的部分可以使用,也可以省略;(error1,error2,...) 、(error3,error4,...) 表示各自的 except 塊可以處理異常的具體型別;[as e] 表示將異常型別賦值給變數 e(方便在 except 塊中呼叫異常型別)。注意,except 後面也可以不指定具體的異常名稱,這樣的話,表示要捕獲所有型別的異常。另外,從 try except 的基本語法格式可以看出,try 塊僅有乙個,但 except **塊可以有多個,這是為了針對不同的異常型別提供不同的異常處理方式。當程式發生不同的意外情況時,會對應不同的異常型別,python 直譯器就會根據該異常型別來決定使用哪個 except 塊來處理該異常。通過在 try 塊後提供多個 except 塊可以無須在異常處理塊中使用 if 判斷異常型別,但依然可以針對不同的異常型別提供相
應的處理邏輯,從而提供更細緻、更有條理的異常處理邏輯。try except 語句的執行流程如下:首先執行 try 中的**塊,如果執行過程**現異常,系統會自動生成乙個異常物件,該異常物件會提交給 python 直譯器,此過程被稱為引發異常。當 python 直譯器收到異常物件時,會尋找能處理該異常物件的 except 塊,如果找到合適的 except 塊,則把該異常物件交給該 except 塊處理,這個過程被稱為捕獲異常。如果 python 直譯器找不到捕獲異常的 except 塊,則程式執行終止,python 直譯器也將退出。
事實上,不管程式**塊是否處於 try 塊中,甚至包括 except 塊中的**,只要執行該**塊時出現了異常,系統總會自動生成乙個 error 物件。如果程式沒有為這段**定義任何的 except 塊,則 python 直譯器無法找到處理該異常的 except 塊,程式就會停止執行;反之,如果程式發生異常,並且該異常經 try 捕獲並由 except 處理完成,則程式會繼續執行。
舉個例子:try:
a = int(input("輸入被除數:"))
b = int(input("輸入除數:"))
c = a / b
print("您輸入的兩個數相除的結果是:", c )
except (valueerror, arithmeticerror):
print("程式發生了數字格式異常、算術異常之一")
except :
print("未知異常")
print("程式繼續執行")
程式執行結果為:輸入被除數:a
程式發生了數字格式異常、算術異常之一
程式繼續執行
上面程式中,第 6 行**使用了(valueerror, arithmeticerror)來指定所捕獲的異常型別,這就表明該 except 塊可以同時捕獲這 2 種型別的異常;第 8 行**只有 except 關鍵字,並未指定具體要捕獲的異常型別,這種省略異常類的 except 語句也是合法的,它表示可捕獲所有型別的異常,一般會作為異常捕獲的最後乙個 except 塊。除此之外,由於 try 塊中引發了異常,並被 except 塊成功捕獲,因此程式才可以繼續執行,才有了「程式繼續執行」的輸出結果。更多學習內容,python學習網。
python異常如何全面捕獲
如果你在寫程式時遇到異常後想進行如下處理的話請參考我下面寫的對異常處理的方法 假設有下面的一段程式 try 語句1語句2 語句n except print 但是你並不知道 語句1至語句n 在執行會出什麼樣的異常,但你還要做異常處理,且想把出現的異常列印出來,並不停止程式的執行,所以在 except ...
python異常如何全面捕獲
如果你在寫程式時遇到異常後想進行如下處理的話請參考我下面寫的對異常處理的方法 假設有下面的一段程式 try 語句1語句2 語句n except print 但是你並不知道 語句1至語句n 在執行會出什麼樣的異常,但你還要做異常處理,且想把出現的異常列印出來,並不停止程式的執行,所以在 except ...
python中如何捕獲異常?
錯誤 本身的錯誤 異常 由輸入引起的錯誤叫異常 異常是比較難解決的,所以引入這個概念 完整模板 try 可能異常的 except 指定異常型別1 異常執行 except 指定異常型別2 異常執行 except exception as result print result 列印系統提示的錯誤 el...