




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第關(guān)于Python的異常捕獲和處理4|異常處理
程序運(yùn)行時(shí)出現(xiàn)異常,目的并不是讓我們的程序直接終止!Python是希望在出現(xiàn)異常時(shí),我們可以編寫代碼來對(duì)異常進(jìn)行處理!
Python提供了tryexcept語句捕獲并處理異常,該異常處理語句的基本語法結(jié)構(gòu)如下:
#可能產(chǎn)生異常的代碼塊
except[(Error1,Error2,...)[ase]]:
#處理異常的代碼塊1
except[(Error3,Error4,...)[ase]]:
#處理異常的代碼塊2
該格式中,[]括起來的部分可以使用,也可以省略。其中各部分的含義如下:
(Error1,Error2,...)、(Error3,Error4,...):其中,Error1、Error2、Error3和Error4都是具體的異常類型。顯然,一個(gè)except塊可以同時(shí)處理多種異常。
[ase]:作為可選參數(shù),表示給異常類型起一個(gè)別名e,這樣做的好處是方便在except塊中調(diào)用異常類型(后續(xù)會(huì)用到)。
[Exception]:作為可選參數(shù),可以代指程序可能發(fā)生的所有異常情況,其通常用在最后一個(gè)except塊。
注:except后面也可以不指定具體的異常名稱,這樣的話,表示要捕獲所有類型的異常。
另外,從tryexcept的基本語法格式可以看出,try代碼塊僅有一個(gè),但except代碼塊可以有多個(gè),這是為了針對(duì)不同的異常類型提供不同的異常處理方式。當(dāng)程序發(fā)生不同的意外情況時(shí),會(huì)對(duì)應(yīng)不同的異常類型,Python解釋器就會(huì)根據(jù)該異常類型來決定使用哪個(gè)except塊來處理該異常。
tryexcept語句的執(zhí)行流程如下:
1、首先執(zhí)行try中的代碼塊,如果執(zhí)行過程中出現(xiàn)異常,系統(tǒng)會(huì)自動(dòng)生成一個(gè)異常類型,并將該異常提交給Python解釋器,此過程稱為捕獲異常。
2、當(dāng)Python解釋器收到異常對(duì)象時(shí),會(huì)尋找能處理該異常對(duì)象的except塊,如果找到合適的except塊,則把該異常對(duì)象交給該except塊處理,這個(gè)過程被稱為處理異常。如果Python解釋器找不到處理異常的except塊,則程序運(yùn)行終止,Python解釋器也將退出。
異常處理例子:
a=int(input(輸入被除數(shù):))
b=int(input(輸入除數(shù):))
c=a/b
print(您輸入的兩個(gè)數(shù)相除的結(jié)果是:,c)
except(ValueError,ArithmeticError):
print(程序發(fā)生了數(shù)字格式異常、算術(shù)異常之一)
except:
print(未知異常)
print(程序繼續(xù)運(yùn)行)
程序運(yùn)行結(jié)果為:
輸入被除數(shù):a程序發(fā)生了數(shù)字格式異常,算術(shù)異常之一程序繼續(xù)運(yùn)行
上面程序中,第6行代碼使用了(ValueError,ArithmeticError)來指定所捕獲的異常類型,這就表明該except塊可以同時(shí)捕獲這2種類型的異常;第8行代碼只有except關(guān)鍵字,并未指定具體要捕獲的異常類型,這種省略異常類的except語句也是合法的,它表示可捕獲所有類型的異常,一般會(huì)作為異常捕獲的最后一個(gè)except塊。除此之外,由于try塊中引發(fā)了異常,并被except塊成功捕獲,因此程序才可以繼續(xù)執(zhí)行,才有了程序繼續(xù)運(yùn)行的輸出結(jié)果。
通過在try塊后提供多個(gè)except塊可以無須在異常處理塊中使用if判斷異常類型,但依然可以針對(duì)不同的異常類型提供相應(yīng)的處理邏輯,從而提供更細(xì)致、更有條理的異常處理邏輯。
事實(shí)上,不管程序代碼塊是否處于try塊中,甚至包括except塊中的代碼,只要執(zhí)行該代碼塊時(shí)出現(xiàn)了異常,系統(tǒng)總會(huì)自動(dòng)生成一個(gè)Error對(duì)象。如果程序沒有為這段代碼定義任何的except塊,則Python解釋器無法找到處理該異常的except塊,程序就會(huì)停止運(yùn)行;反之,如果程序發(fā)生異常,并且該異常經(jīng)try捕獲并由except處理完成,則程序會(huì)繼續(xù)執(zhí)行。
5|獲取特定異常的有關(guān)信息
每種異常類型都提供了如下幾個(gè)屬性和方法,通過調(diào)用它們,就可以獲取當(dāng)前處理異常類型的相關(guān)信息:
args:返回異常的錯(cuò)誤編號(hào)和描述字符串;
str(e):返回異常信息,但不包括異常信息的類型;
repr(e):返回較全的異常信息,包括異常信息的類型。
result=20/int(input(請(qǐng)輸入除數(shù):))
print(result)
exceptValueError:
print(必須輸入整數(shù))
exceptArithmeticError:
print(算數(shù)錯(cuò)誤,除數(shù)不能為0)
else:
print(沒有出現(xiàn)異常)
print(繼續(xù)運(yùn)行)
程序運(yùn)行結(jié)果為:
輸入被除數(shù):210沒有出現(xiàn)異常繼續(xù)運(yùn)行
6|finally語句
Python異常處理機(jī)制還提供了一個(gè)finally語句,用來為try塊中的程序做掃尾清理工作。
在整個(gè)異常處理機(jī)制中,finally語句的功能是:無論try塊是否發(fā)生異常,最終都要進(jìn)入finally語句,并執(zhí)行其中的代碼塊。
finally示例:
a=20/int(input(請(qǐng)輸入a的值:))
print(a)
except:
print(發(fā)生異常)
else:
print(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術(shù)素材考試題及答案
- 商業(yè)樓宇中央空調(diào)改造工程協(xié)議
- 市場推廣制作與執(zhí)行合同書
- 在線服務(wù)隱私保護(hù)合同協(xié)議書
- 金融投資產(chǎn)品開發(fā)協(xié)議
- 貴州國企招聘2025貴州磷化(集團(tuán))有限責(zé)任公司招聘139人筆試參考題庫附帶答案詳解
- 2025黑龍江中鐵特貨物流股份有限公司招聘75人筆試參考題庫附帶答案詳解
- 2025廣東儲(chǔ)能產(chǎn)業(yè)發(fā)展有限公司招聘17人筆試參考題庫附帶答案詳解
- 2025年甘肅人力委托招聘蘭州地鐵安檢人員筆試參考題庫附帶答案詳解
- 贈(zèng)友送別類試題及答案
- 當(dāng)代美國幼小銜接政策的研究
- 老年人脊椎疾病的預(yù)防和康復(fù)
- 大學(xué)物理課件57波爾共振實(shí)驗(yàn)
- 2023年工程師pe年終總結(jié)及年后展望
- 中國環(huán)境保護(hù)徽
- 眩暈護(hù)理完整
- 麥凱66表格(完全版)
- 竣工資料移交清單
- 作業(yè)指導(dǎo)書露天礦山作業(yè)指導(dǎo)書
- 家庭照護(hù)員題庫
- 人教版七年級(jí)數(shù)學(xué)上冊(cè)第三章《數(shù)學(xué)活動(dòng)》名師課件
評(píng)論
0/150
提交評(píng)論