Python用Try語(yǔ)句捕獲異常的實(shí)例方法
python的異常,以及用try復(fù)合語(yǔ)句處理異常。
運(yùn)行代碼時(shí)有時(shí)會(huì)出現(xiàn)各種各樣的錯(cuò)誤,致使解析器中斷執(zhí)行,并提示xxxxxxErorr的提示,后面跟具體的錯(cuò)誤的描述,這被稱為是引發(fā)了異常。
其實(shí)異常告訴我們的是遇到了什么類型的錯(cuò)誤。xxxxErorr就是python內(nèi)置的異常類型。每一種異常類型,都有它自己的錯(cuò)誤信息。

有一種比較容易辨識(shí),容易處理的錯(cuò)誤,語(yǔ)法錯(cuò)誤:SyntaxError
是由于寫代碼時(shí)的語(yǔ)法錯(cuò)誤,大部分的解析器都會(huì)提前提示,像pycharm,在書寫時(shí)如果語(yǔ)法錯(cuò)誤,都會(huì)有波浪線提示。語(yǔ)法上的錯(cuò)誤很好處理,類似與寫文章寫錯(cuò)字了,改正就行了。

如何處理異常:
除了語(yǔ)法錯(cuò)誤能輕松搞定,其他有些異常類型不影響代碼的功能,而又不想讓異常中斷執(zhí)行時(shí),就要對(duì)異常進(jìn)行處理,而不讓他中斷程序:
例如:有一個(gè)字典personDetail={"name":“光頭強(qiáng)”}里邊是光頭強(qiáng)的資料,想取到它的資料,但具體都有什么資料我們不知道,如果輸入的鍵不存在就會(huì)引發(fā)異常而中斷執(zhí)行。致使后面的代碼也為無(wú)法執(zhí)行。

那么就要捕獲這些異常,繞過(guò)它,能讓下面的代碼繼續(xù)運(yùn)行。python提供了try語(yǔ)句來(lái)實(shí)現(xiàn)這些功能。
語(yǔ)法:
try:
可能發(fā)生異常的代碼
except 異常類型:
捕獲的異常后要執(zhí)行的代碼
try 語(yǔ)句的工作原理如下。
1)執(zhí)行 try 子句時(shí)如果沒(méi)有異常發(fā)生,則跳過(guò) except 子句并完成 try 語(yǔ)句的執(zhí)行。
2)如果在執(zhí)行try 子句時(shí)發(fā)生了異常,則跳至except子句。
3)執(zhí)行 except 子句 ,如果引發(fā)異常的類型和 except 關(guān)鍵字后面的異常匹配,就是捕獲了異常,執(zhí)行except子句。
例如:
gtqDict={"Name":"光頭強(qiáng)","Age":34,"Gender":"男"
try:
print(gtqDict["Weight"])
except KeyError:
print("Weight不存在,繼續(xù)走"
print(gtqDict["Age"])
print(gtqDict["Gender"])
例子不管weight是否存在,都能使得程序完。

捕獲多個(gè)異常:
有時(shí)不確定會(huì)發(fā)生哪種異常,就把異常類型以元組的形式組包統(tǒng)統(tǒng)放在except后面,來(lái)匹配可能發(fā)生的異常:
比如:要打印光頭強(qiáng)年齡的Age鍵,不確定這個(gè)鍵是否存在,就用KeyErorr,不確定會(huì)不會(huì)發(fā)生鍵名是否正確,就用NameErorr。
例如:
gtqDict={"Name":"光頭強(qiáng)","Age":34,"Gender":"男"
try:
print(gtqDict["age"])
except (KeyError,KeyError):
print("age錯(cuò)誤"
print(gtqDict["Name"])
print(gtqDict["Gender"])

捕獲異常的描述信息:可以將異常的具體描述打印出來(lái),以供參考。
try:可能發(fā)生異常的代碼
except (KeyError,KeyError) as 信息變量:
print(信息變量)
例如:
gtqDict={"Name":"光頭強(qiáng)","Age":34,"Gender":"男"}
try:
print(gtqDict["Weight"])
except (KeyError,KeyError) as e:
print(type(e),e)
print(gtqDict["Name"])
print(gtqDict["Gender"])

捕獲所有異常:
前面提過(guò),引發(fā)異常的xxxxErorr都是python異常的類型。python中所有異常類型都是基類Exception的派生類。
那么在寫代碼的時(shí)候不用指定異常的具體類型,只要捕獲基類就等于捕獲了所有的異常,但輸出的是具體的異常信息,這很有利于在大范圍內(nèi)找到具體的錯(cuò)誤。
語(yǔ)法:
try:可能發(fā)生異常的代碼
except Excepthon as 信息變量:
print(信息變量)
例如:
gtq="光頭強(qiáng)"
try:
print(name)
except Exception as e:
print(type(e),e
print("gtq")
---<class 'NameError'> name 'name' is not defined
---gtq

異常里的else子句:
else子句是可選的,如果使用,必須放在所有的except子句之后。
它是在try子句沒(méi)有發(fā)生異常的情況執(zhí)行。
例如:
gtq="光頭強(qiáng)"
try:
name=gtq
except Exception as e:
print(type(e),e)
else:
print("%s是一個(gè)伐木工人"%name)

finally子句: 寫在try語(yǔ)句的最后。
不管 try 子句里面是否有異常,finally 子句都會(huì)執(zhí)行。
例如:
gtq="光頭強(qiáng)"
try:
name=GTQ
except Exception as e:
print(type(e),e)
else:
print("%s是一個(gè)伐木工人"%name)
finally:
print("調(diào)用資料結(jié)束")
---<class 'NameError'> name 'GTQ' is not defined
---調(diào)用資料結(jié)束

相關(guān)文章
Python使用sigthief簽發(fā)證書的實(shí)現(xiàn)步驟
Windows 系統(tǒng)中的一些非常重要文件通常會(huì)被添加數(shù)字簽名,其目的是用來(lái)防止被篡改,能確保用戶通過(guò)互聯(lián)網(wǎng)下載時(shí)能確信此代碼沒(méi)有被非法篡改和來(lái)源可信,從而保護(hù)了代碼的完整性、保護(hù)了用戶不會(huì)被病毒、惡意代碼和間諜軟件所侵害,本章將演示證書的簽發(fā)與偽造2021-06-06
Python實(shí)現(xiàn)AVIF圖片與其他圖片格式間的批量轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用 Pillow 庫(kù)實(shí)現(xiàn)AVIF與其他格式的相互轉(zhuǎn)換,即將AVIF轉(zhuǎn)換為常見(jiàn)的格式,比如 JPG 或 PNG,需要的小伙伴可以參考下2025-04-04
Python實(shí)現(xiàn)括號(hào)匹配方法詳解
這篇文章主要介紹了python實(shí)現(xiàn)括號(hào)匹配方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
python調(diào)用dll出現(xiàn)精度問(wèn)題解決
本文主要介紹了python調(diào)用dll出現(xiàn)精度問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
python實(shí)現(xiàn)web郵箱掃描的示例(附源碼)
這篇文章主要介紹了python實(shí)現(xiàn)web郵箱掃描的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
Python Excel實(shí)現(xiàn)自動(dòng)添加編號(hào)
這篇文章主要為大家詳細(xì)介紹了如何使用Python在Excel中實(shí)現(xiàn)自動(dòng)添加編號(hào)效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式
這篇文章主要介紹了pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
requests在python中發(fā)送請(qǐng)求的實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于requests在python中發(fā)送請(qǐng)求的實(shí)例講解內(nèi)容,有興趣的朋友們可以測(cè)試學(xué)習(xí)下。2021-02-02

