日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python用Try語(yǔ)句捕獲異常的實(shí)例方法

系統(tǒng) 1855 0

python的異常,以及用try復(fù)合語(yǔ)句處理異常。

運(yùn)行代碼時(shí)有時(shí)會(huì)出現(xiàn)各種各樣的錯(cuò)誤,致使解析器中斷執(zhí)行,并提示xxxxxxErorr的提示,后面跟具體的錯(cuò)誤的描述,這被稱為是引發(fā)了異常。

其實(shí)異常告訴我們的是遇到了什么類型的錯(cuò)誤。xxxxErorr就是python內(nèi)置的異常類型。每一種異常類型,都有它自己的錯(cuò)誤信息。

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第1張圖片

有一種比較容易辨識(shí),容易處理的錯(cuò)誤,語(yǔ)法錯(cuò)誤:SyntaxError

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

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第2張圖片

如何處理異常:

除了語(yǔ)法錯(cuò)誤能輕松搞定,其他有些異常類型不影響代碼的功能,而又不想讓異常中斷執(zhí)行時(shí),就要對(duì)異常進(jìn)行處理,而不讓他中斷程序:

例如:有一個(gè)字典personDetail={"name":“光頭強(qiáng)”}里邊是光頭強(qiáng)的資料,想取到它的資料,但具體都有什么資料我們不知道,如果輸入的鍵不存在就會(huì)引發(fā)異常而中斷執(zhí)行。致使后面的代碼也為無(wú)法執(zhí)行。

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第3張圖片

那么就要捕獲這些異常,繞過(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是否存在,都能使得程序完。

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第4張圖片

捕獲多個(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"])
          

?

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第5張圖片

捕獲異常的描述信息:可以將異常的具體描述打印出來(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"])


          

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第6張圖片

捕獲所有異常

前面提過(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")

---
            
               name 'name' is not defined

---gtq


            
          

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第7張圖片

異常里的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)

          

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第8張圖片

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é)束")

---
            
               name 'GTQ' is not defined

---調(diào)用資料結(jié)束

            
          

Python用Try語(yǔ)句捕獲異常的實(shí)例方法_第9張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 英吉沙县| 黑山县| 托克逊县| 屏东县| 桐庐县| 昌乐县| 绥棱县| 张家港市| 萍乡市| 东明县| 西丰县| 武威市| 崇左市| 泌阳县| 定兴县| 萨迦县| 栖霞市| 东丰县| 崇左市| 五指山市| 长白| 南陵县| 同心县| 阜城县| 蒙阴县| 梓潼县| 安塞县| 海兴县| 靖安县| 云浮市| 汝城县| 百色市| 六枝特区| 峨边| 临夏县| 崇信县| 岳西县| 南投市| 垫江县| 拜城县| 定结县|