日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 抛出异常_python 异常

發布時間:2024/9/18 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 抛出异常_python 异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目標

異常的概念

捕獲異常

異常的傳遞

拋出異常

01. 異常的概念

程序在運行時,如果 Python 解釋器 遇到 到一個錯誤,會停止程序的執行,并且提示一些錯誤信息,這就是 異常

程序停止執行并且提示錯誤信息 這個動作,我們通常稱之為:拋出(raise)異常

程序開發時,很難將 所有的特殊情況 都處理的面面俱到,通過 異常捕獲 可以針對突發事件做集中的處理,從而保證程序的 穩定性和健壯性

02. 捕獲異常

2.1 簡單的捕獲異常語法

在程序開發中,如果 對某些代碼的執行不能確定是否正確,可以增加 try(嘗試) 來 捕獲異常

捕獲異常最簡單的語法格式:

try: 嘗試執行的代碼except: 出現錯誤的處理

try 嘗試,下方編寫要嘗試代碼,不確定是否能夠正常執行的代碼

except 如果不是,下方編寫嘗試失敗的代碼

簡單異常捕獲演練 —— 要求用戶輸入整數

try: # 提示用戶輸入一個數字 num = int(input("請輸入數字:"))except: print("請輸入正確的數字")

2.2 錯誤類型捕獲

在程序執行時,可能會遇到 不同類型的異常,并且需要 針對不同類型的異常,做出不同的響應,這個時候,就需要捕獲錯誤類型了

語法如下:

try: # 嘗試執行的代碼 passexcept 錯誤類型1: # 針對錯誤類型1,對應的代碼處理 passexcept (錯誤類型2, 錯誤類型3): # 針對錯誤類型2 和 3,對應的代碼處理 passexcept Exception as result: print("未知錯誤 %s" % result)

當 Python 解釋器 拋出異常 時,最后一行錯誤信息的第一個單詞,就是錯誤類型

異常類型捕獲演練 —— 要求用戶輸入整數

需求

提示用戶輸入一個整數

使用 8 除以用戶輸入的整數并且輸出

try: num = int(input("請輸入整數:")) result = 8 / num print(result)except ValueError: print("請輸入正確的整數")except ZeroDivisionError: print("除 0 錯誤")

捕獲未知錯誤

在開發時,要預判到所有可能出現的錯誤,還是有一定難度的

如果希望程序 無論出現任何錯誤,都不會因為 Python 解釋器 拋出異常而被終止,可以再增加一個 except

語法如下:

except Exception as result: print("未知錯誤 %s" % result)

2.3 異常捕獲完整語法

在實際開發中,為了能夠處理復雜的異常情況,完整的異常語法如下:

提示:

有關完整語法的應用場景,在后續學習中,結合實際的案例會更好理解

現在先對這個語法結構有個印象即可

try: # 嘗試執行的代碼 passexcept 錯誤類型1: # 針對錯誤類型1,對應的代碼處理 passexcept 錯誤類型2: # 針對錯誤類型2,對應的代碼處理 passexcept (錯誤類型3, 錯誤類型4): # 針對錯誤類型3 和 4,對應的代碼處理 passexcept Exception as result: # 打印錯誤信息 print(result)else: # 沒有異常才會執行的代碼 passfinally: # 無論是否有異常,都會執行的代碼 print("無論是否有異常,都會執行的代碼")

else 只有在沒有異常時才會執行的代碼

finally 無論是否有異常,都會執行的代碼

之前一個演練的 完整捕獲異常 的代碼如下:

try: num = int(input("請輸入整數:")) result = 8 / num print(result)except ValueError: print("請輸入正確的整數")except ZeroDivisionError: print("除 0 錯誤")except Exception as result: print("未知錯誤 %s" % result)else: print("正常執行")finally: print("執行完成,但是不保證正確")

03. 異常的傳遞

異常的傳遞 —— 當 函數/方法 執行 出現異常,會 將異常傳遞 給 函數/方法 的 調用一方

如果 傳遞到主程序,仍然 沒有異常處理,程序才會被終止

提示

在開發中,可以在主函數中增加 異常捕獲

而在主函數中調用的其他函數,只要出現異常,都會傳遞到主函數的 異常捕獲 中

這樣就不需要在代碼中,增加大量的 異常捕獲,能夠保證代碼的整潔

需求

定義函數 demo1() 提示用戶輸入一個整數并且返回

定義函數 demo2() 調用 demo1()

在主程序中調用 demo2()

def demo1(): return int(input("請輸入一個整數:"))def demo2(): return demo1()try: print(demo2())except ValueError: print("請輸入正確的整數")except Exception as result: print("未知錯誤 %s" % result)

04. 拋出 raise 異常

4.1 應用場景

在開發中,除了 代碼執行出錯 Python 解釋器會 拋出 異常之外

還可以根據 應用程序 特有的業務需求 主動拋出異常

示例

提示用戶 輸入密碼,如果 長度少于 8,拋出 異常

注意

當前函數 只負責 提示用戶輸入密碼,如果 密碼長度不正確,需要其他的函數進行額外處理

因此可以 拋出異常,由其他需要處理的函數 捕獲異常

4.2 拋出異常

Python 中提供了一個 Exception 異常類

在開發時,如果滿足 特定業務需求時,希望 拋出異常,可以:

創建 一個 Exception 的 對象

使用 raise 關鍵字 拋出 異常對象

需求

定義 input_password 函數,提示用戶輸入密碼

如果用戶輸入長度 < 8,拋出異常

如果用戶輸入長度 >=8,返回輸入的密碼

def input_password(): # 1. 提示用戶輸入密碼 pwd = input("請輸入密碼:") # 2. 判斷密碼長度,如果長度 >= 8,返回用戶輸入的密碼 if len(pwd) >= 8: return pwd # 3. 密碼長度不夠,需要拋出異常 # 1> 創建異常對象 - 使用異常的錯誤信息字符串作為參數 ex = Exception("密碼長度不夠") # 2> 拋出異常對象 raise extry: user_pwd = input_password() print(user_pwd)except Exception as result: print("發現錯誤:%s" % result)

總結

以上是生活随笔為你收集整理的python 抛出异常_python 异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。