關(guān)于Python的異常捕獲和處理_第1頁
關(guān)于Python的異常捕獲和處理_第2頁
關(guān)于Python的異常捕獲和處理_第3頁
關(guān)于Python的異常捕獲和處理_第4頁
關(guān)于Python的異常捕獲和處理_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論