Pyhton 异常
捕獲異常
簡單的捕獲異常語法
- 如果對某些代碼的執行不能確定是否正確,可以增加 try(嘗試) 來捕獲異常
- 捕獲異常最簡單的語法格式:
- try 嘗試,下方編寫要嘗試嗲嗎,不確定是否能夠正常執行的代碼
- except 如果不是,下方編寫嘗試失敗的代碼
示例:
try:# 不能確定正確執行的代碼num = int(input("請輸入一個整數:")) except:# 錯誤的處理代碼print("請輸入正確的整數")print("程序執行結束")錯誤類型捕獲
- 在程序執行時,可能會遇到 不同類型的異常,并且需要針對不同類型的異常,做出不同的響應,這個時候,就需要捕獲錯誤類型了
語法如下:
try# 嘗試執行的代碼pass except 錯誤類型1:# 針對錯誤類型1,對應的代碼處理pass except (錯誤類型2, 錯誤類型3):# 針對錯誤類型2 和 3,對應的代碼處理pass except Exception as result:print("未知錯誤 %s" % result)示例:
try:# 提示用戶輸入一個整數num = int(input("請輸入一個整數:"))# 使用 8 除以用戶輸入的整數并且輸出result = 8 / numprint(result) except ZeroDivisionError:print("除0錯誤") except ValueError:print("請輸入正確的整數:")- 當 Python 解釋器 拋出異常時, 最后一行錯誤信息的第一個單詞,就是錯誤類型
捕獲未知錯誤
- 如果希望程序 無論出現任何錯誤,都不會因為 Python 解釋器拋出異常而被終止,可以再增加一個 except
語法如下:
except Exception as result:print("未知錯誤 %s" % result)異常捕獲完整語法
完整的異常語法如下:
try# 嘗試執行的代碼pass except 錯誤類型1:# 針對錯誤類型1,對應的代碼處理pass except 錯誤類型2:# 針對錯誤類型2,對應的代碼處理pass except (錯誤類型3, 錯誤類型4):# 針對錯誤類型3 和 4,對應的代碼處理pass except Exception as result:# 打印錯誤信息print(result) else:# 沒有異常才會執行的代碼pass finally:# 無論是否有異常,都會執行的代碼print("無論是否有異常,都會執行的代碼")- else 只有在沒有異常時才會執行的代碼
- finally 無論是否有異常,都會執行的代碼
示例:
try:# 提示用戶輸入一個整數num = int(input("請輸入一個整數:"))# 使用 8 除以用戶輸入的整數并且輸出result = 8 / numprint(result) except ZeroDivisionError:print("除0錯誤") except Exception as result:print("未知錯誤 %s" % result) else:print("嘗試成功") finally:print("無論是否出現錯誤都會執行的代碼")異常的傳遞
- 異常的傳遞——當 函數/方法執行 出現異常,會將異常傳遞給函數/方法的調用一方
- 如果 傳遞到主程序,仍然沒有異常處理,程序才會被終止
示例:
def demo1():return int(input("輸入整數:"))def demo2():return demo1()# 利用異常的傳遞性,在主程序捕獲異常 try:print(demo2()) except Exception as result:print("位置錯誤 %s" % result)主動拋出異常
- Pyhon 中提供了一個 Exception 異常類
- 在開發時,如果希望能夠主動拋出異常,可以:
- 創建一個 Exception 的對象
- 使用 raise 關鍵字 拋出 異常對象
總結
- 上一篇: LINUX 上的 Shebang 符号(
- 下一篇: Pyhton 模块和包