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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python异常处理的语法格式_Python异常处理

發(fā)布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python异常处理的语法格式_Python异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python異常處理

一. 異常的概念

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

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

二. 捕獲異常

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

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

錯誤類型捕獲

先看個例子:

>ipython

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]

Type 'copyright', 'credits' or 'license' for more information

IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: #提示用戶輸入一個整數(shù)

IIn [2]: num = int(input("輸入一個整數(shù): "))

輸入一個整數(shù): 10

In [3]: num = int(input("輸入一個整數(shù): "))

輸入一個整數(shù): i

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in

----> 1 num = int(input("輸入一個整數(shù): "))

ValueError: invalid literal for int() with base 10: 'i'

In [4]:

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

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

try:

嘗試執(zhí)行的代碼

except:

出現(xiàn)錯誤的處理

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

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

試著來解決上一個例子出現(xiàn)的問題

try: # 提示用戶輸入一個數(shù)字

num = int(input("請輸入數(shù)字:"))

except:

print("請輸入正確的數(shù)字")

更進一步:錯誤類型捕獲

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

語法如下:

try:

pass # 嘗試執(zhí)行的代碼

except 錯誤類型1:

pass # 針對錯誤類型1,對應(yīng)的代碼處理

except (錯誤類型2, 錯誤類型3):

pass # 針對錯誤類型2 和 3,對應(yīng)的代碼處理

except Exception as result:

print("未知錯誤 %s" % result)

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

接著完善剛才的代碼:

try:

num = int(input("請輸入整數(shù):"))

result = 8 / num

print(result)

except ValueError:

print("請輸入正確的整數(shù)")

except ZeroDivisionError:

print("除 0 錯誤")

捕獲未知錯誤

在開發(fā)時,要預(yù)判到所有可能出現(xiàn)的錯誤,還是有一定難度的。如果希望程序 無論出現(xiàn)任何錯誤,都不會因為 Python 解釋器 拋出異常而被終止,可以再增加一個 except

語法如下:

except Exception as result:

print("未知錯誤 %s" % result)

注意:result是推薦寫法,可以任意指定。

異常捕獲的完整語法

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

try: # 嘗試執(zhí)行的代碼

pass

except 錯誤類型1:

# 針對錯誤類型1,對應(yīng)的代碼處理

pass

except 錯誤類型2:

# 針對錯誤類型2,對應(yīng)的代碼處理

pass

except (錯誤類型3, 錯誤類型4):

#針對錯誤類型3 和 4,對應(yīng)的代碼處理

pass

except Exception as result:

# 打印錯誤信息

print(result)

else:

# 沒有異常才會執(zhí)行的代碼

pass

finally:

# 無論是否有異常,都會執(zhí)行的代碼

print("無論是否有異常,都會執(zhí)行的代碼")

else 只有在沒有異常時才會執(zhí)行的代碼

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

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

try:

num = int(input("請輸入整數(shù):"))

result = 8 / num

print(result)

except ValueError:

print("請輸入正確的整數(shù)")

except ZeroDivisionError:

print("除 0 錯誤")

except Exception as result:

print("未知錯誤 %s" % result)

else:

print("正常執(zhí)行")

finally:

print("執(zhí)行完成,但是不保證正確")

三. 異常的傳遞

當(dāng) 函數(shù)/方法 執(zhí)行 出現(xiàn)異常,會 將異常傳遞 給 函數(shù)/方法 的 調(diào)用一方;

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

提示:

在開發(fā)中,可以在主函數(shù)中增加 異常捕獲,而在主函數(shù)中調(diào)用的其他函數(shù),只要出現(xiàn)異常,都會傳遞到主函數(shù)的 異常捕獲 中。

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

例子:

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

定義函數(shù) demo2() 調(diào)用 demo1()

在主程序中調(diào)用 demo2()

def demo1():

return int(input("請輸入一個整數(shù):"))

def demo2():

return demo1()

# 測試:

try:

print(demo2())

except ValueError:

print("請輸入正確的整數(shù)")

except Exception as result:

print("未知錯誤 %s" % result)

四. 主動拋出異常–raise

在開發(fā)中,除了 代碼執(zhí)行出錯 Python 解釋器會 拋出 異常之外,還可以根據(jù) 應(yīng)用程序 特有的業(yè)務(wù)需求 主動拋出異常。

來看個例子:

需求

定義 input_password 函數(shù),提示用戶輸入密碼

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

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

注意

當(dāng)前函數(shù) 只負責(zé) 提示用戶輸入密碼,如果 密碼長度不正確,需要其他的函數(shù)進行額外處理

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

Python 中提供了一個 Exception 異常類

在開發(fā)時,如果滿足 特定業(yè)務(wù)需求時,希望 拋出異常,可以:

創(chuàng)建 一個 Exception 的 對象

使用 raise 關(guān)鍵字 拋出 異常對象

實現(xiàn)

def input_password():

# 1. 提示用戶輸入密碼

pwd = input("請輸入密碼:")

# 2. 判斷密碼長度,如果長度 >= 8,返回用戶輸入的密碼

if len(pwd) >= 8:

return pwd

# 3. 密碼長度不夠,需要拋出異常

# 1> 創(chuàng)建異常對象 - 使用異常的錯誤信息字符串作為參數(shù)

ex = Exception("密碼長度不夠")

# 2> 拋出異常對象

raise ex

# 測試:

try:

userpwd = input_password()

print("user_pwd: ",userpwd)

except Exception as result:

print("發(fā)現(xiàn)錯誤:%s" % result)

總結(jié)

以上是生活随笔為你收集整理的python异常处理的语法格式_Python异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。