信息技術(shù):134Python raise用法(超級(jí)詳細(xì)看了無(wú)師自通)_第1頁(yè)
信息技術(shù):134Python raise用法(超級(jí)詳細(xì)看了無(wú)師自通)_第2頁(yè)
信息技術(shù):134Python raise用法(超級(jí)詳細(xì)看了無(wú)師自通)_第3頁(yè)
信息技術(shù):134Python raise用法(超級(jí)詳細(xì)看了無(wú)師自通)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Python raise用法(超級(jí)詳細(xì),看了無(wú)師自通)在前面章節(jié)的學(xué)習(xí)中,遺留過一個(gè)問題,即是否可以在程序的指定位置手動(dòng)拋出一個(gè)異常? 答案是肯定的,Python允許我們?cè)诔绦蛑惺謩?dòng)設(shè)置異常,使用raise語(yǔ)句即可。讀者可能會(huì)感到疑惑,即我們從來(lái)都是想方設(shè)法地讓程序正常運(yùn)行,為什么還要手動(dòng)設(shè)置異 常呢?首先要分清楚程序發(fā)生異常和程序執(zhí)行錯(cuò)誤,它們完全是兩碼事,程序由于錯(cuò)誤導(dǎo)致 的運(yùn)行異常,是需要程序員想方法解決的;但還有一些異常,是程序正常運(yùn)行的結(jié)果,比方 用raise手動(dòng)引發(fā)的異常。raise語(yǔ)句的基本語(yǔ)法格式為:raise exceptionName (reason)其中,用口括起來(lái)的為可

2、選參數(shù),其作用是指定拋出的異常名稱,以及異常信息的相關(guān)描 述。如果可選參數(shù)全部省略,那么raise會(huì)把當(dāng)前錯(cuò)誤原樣拋出;如果僅省略(reason),那么 在拋出異常時(shí),將不附帶任何的異常描述信息。也就是說,raise語(yǔ)句有如下三種常用的用法:raise :單獨(dú)一個(gè)raiseo該語(yǔ)句引發(fā)當(dāng)前上下文中捕獲的異常(比方在except塊 中),或默認(rèn)引發(fā)RuntimeError異常。raise異常類名稱:raise后帶一個(gè)異常類名稱,表示引發(fā)執(zhí)行類型的異常。raise異常類名稱(描述信息):在引發(fā)指定類型的異常的同時(shí),附帶異常的描述信息。想了解一下常用的異常類名稱,可以閱讀Python常見異常類型一節(jié)

3、。顯然,每次執(zhí)行raise語(yǔ)句,都只能引發(fā)一次執(zhí)行的異常。首先,我們來(lái)測(cè)試一下以上3種 raise的用法: raiseTraceback (most recent call last):File / line L in raiseRuntimeError: No active exception to reraise raise ZeroDivisionErrorTraceback (most recent call last):File z line lz in raise ZeroDivisionErrorZeroDivisionError raise ZeroDivisionError(

4、除數(shù)不能為零”)Traceback (most recent call last):File z line 1, in raise ZeroDivisionError(除數(shù)不能為零”)ZeroDivisionError:除數(shù)不能為零當(dāng)然,我們手動(dòng)讓程序引發(fā)異常,很多時(shí)候并不是為了讓其崩潰。事實(shí)上,raise語(yǔ)句引發(fā) 的異常通常用try except ( else finally )異常處理結(jié)構(gòu)來(lái)捕獲并進(jìn)行處理。例如:try:a 二 input。輸入一個(gè)數(shù):)#判斷用戶輸入的是否為數(shù)字if(not a.isdigit():raise ValueError(a 必須是數(shù)字”)except Valu

5、eError as e:print(1引發(fā)異常:,repr(e)程序運(yùn)行結(jié)果為:輸入一個(gè)數(shù):a引發(fā)異常:ValueErrorfa必須是數(shù)字,)可以看到,當(dāng)用戶輸入的不是數(shù)字時(shí),程序會(huì)進(jìn)入if判斷語(yǔ)句,并執(zhí)行raise引發(fā)ValueError異常。但由于其位于try塊中,因?yàn)閞aise拋出的異常會(huì)被try捕獲,并由 except塊進(jìn)行處理。因此,雖然程序中使用了 raise語(yǔ)句引發(fā)異常,但程序的執(zhí)行是正常的,手動(dòng)拋出的異常 并不會(huì)導(dǎo)致程序崩潰。raise不需要參數(shù)正如前面所看到的,在使用raise語(yǔ)句時(shí)可以不帶參數(shù),例如:try:a 二 input(輸入一個(gè)數(shù):)if(not a.isdigit

6、():raise ValueError(a 必須是數(shù)字”)except ValueError as e:priW引發(fā)異常:”,repr(e)raise程序執(zhí)行結(jié)果為:輸入一個(gè)數(shù):a引發(fā)異常:ValueErrorfa必須是數(shù)字,)Traceback (most recent call last):File D:python3.6l.py, line 4, in raise ValueError(a 必須是數(shù)字”)ValueError: a必須是數(shù)字這里重點(diǎn)關(guān)注位于except塊中的raise ,由于在其之前我們已經(jīng)手動(dòng)引發(fā)了 ValueError 異常,因此這里當(dāng)再使用raise語(yǔ)句時(shí),它會(huì)再次引發(fā)一次。當(dāng)在沒有引發(fā)過異常的程序使用無(wú)參的raise語(yǔ)句時(shí),它默認(rèn)引發(fā)的是RuntimeError異 常。例如:try:a = input(輸入一個(gè)數(shù):)if(not a.isdigit():raiseexcept Ru

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論