下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Python raise用法(超級(jí)詳細(xì),看了無師自通)在前面章節(jié)的學(xué)習(xí)中,遺留過一個(gè)問題,即是否可以在程序的指定位置手動(dòng)拋出一個(gè)異常? 答案是肯定的,Python允許我們?cè)诔绦蛑惺謩?dòng)設(shè)置異常,使用raise語句即可。讀者可能會(huì)感到疑惑,即我們從來都是想方設(shè)法地讓程序正常運(yùn)行,為什么還要手動(dòng)設(shè)置異 常呢?首先要分清楚程序發(fā)生異常和程序執(zhí)行錯(cuò)誤,它們完全是兩碼事,程序由于錯(cuò)誤導(dǎo)致 的運(yùn)行異常,是需要程序員想方法解決的;但還有一些異常,是程序正常運(yùn)行的結(jié)果,比方 用raise手動(dòng)引發(fā)的異常。raise語句的基本語法格式為:raise exceptionName (reason)其中,用口括起來的為可
2、選參數(shù),其作用是指定拋出的異常名稱,以及異常信息的相關(guān)描 述。如果可選參數(shù)全部省略,那么raise會(huì)把當(dāng)前錯(cuò)誤原樣拋出;如果僅省略(reason),那么 在拋出異常時(shí),將不附帶任何的異常描述信息。也就是說,raise語句有如下三種常用的用法:raise :單獨(dú)一個(gè)raiseo該語句引發(fā)當(dāng)前上下文中捕獲的異常(比方在except塊 中),或默認(rèn)引發(fā)RuntimeError異常。raise異常類名稱:raise后帶一個(gè)異常類名稱,表示引發(fā)執(zhí)行類型的異常。raise異常類名稱(描述信息):在引發(fā)指定類型的異常的同時(shí),附帶異常的描述信息。想了解一下常用的異常類名稱,可以閱讀Python常見異常類型一節(jié)
3、。顯然,每次執(zhí)行raise語句,都只能引發(fā)一次執(zhí)行的異常。首先,我們來測(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語句引發(fā) 的異常通常用try except ( else finally )異常處理結(jié)構(gòu)來捕獲并進(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判斷語句,并執(zhí)行raise引發(fā)ValueError異常。但由于其位于try塊中,因?yàn)閞aise拋出的異常會(huì)被try捕獲,并由 except塊進(jìn)行處理。因此,雖然程序中使用了 raise語句引發(fā)異常,但程序的執(zhí)行是正常的,手動(dòng)拋出的異常 并不會(huì)導(dǎo)致程序崩潰。raise不需要參數(shù)正如前面所看到的,在使用raise語句時(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語句時(shí),它會(huì)再次引發(fā)一次。當(dāng)在沒有引發(fā)過異常的程序使用無參的raise語句時(shí),它默認(rèn)引發(fā)的是RuntimeError異 常。例如:try:a = input(輸入一個(gè)數(shù):)if(not a.isdigit():raiseexcept Ru
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南弘玉滇中人力資源產(chǎn)業(yè)園運(yùn)營管理有限公司就業(yè)見習(xí)崗位招募2人備考考試題庫附答案解析
- 警務(wù)輔警考試試題及答案
- 2026年中國航天科技集團(tuán)有限公司第五研究院第五一0所校園招聘?jìng)淇伎荚囶}庫附答案解析
- 2026福建福州市園開新筑開發(fā)建設(shè)有限公司項(xiàng)目建設(shè)合同制人員招聘1人參考考試題庫附答案解析
- 2026重慶市萬州區(qū)柱山鄉(xiāng)人民政府公益性崗位聘用1人備考考試試題附答案解析
- 中江縣公安局2026年第一次公開招聘警務(wù)輔助人員(60人)備考考試試題附答案解析
- 2026甘肅金昌市機(jī)關(guān)事務(wù)管理局補(bǔ)招臨聘駕駛員3人備考考試試題附答案解析
- 2026中國科學(xué)院上海生命科學(xué)研究院生物化學(xué)與細(xì)胞生物學(xué)研究所分子細(xì)胞卓越中心曾安組招聘博士后科研助理2人備考考試試題附答案解析
- 國家電網(wǎng)國網(wǎng)校園招聘考試筆試教材用書歷年考試真題復(fù)習(xí)資料
- 國家電網(wǎng)筆試題目及答案
- 社區(qū)健康服務(wù)與管理課件
- QGDW1512-2014電力電纜及通道運(yùn)維規(guī)程
- 投資車行合同協(xié)議書
- 國際消防安全系統(tǒng)規(guī)則
- 靜脈治療新理念
- 高中研究性學(xué)習(xí)指導(dǎo)課課件系列總結(jié)階段-學(xué)生如何開展研究活動(dòng)
- 心內(nèi)介入治療護(hù)理
- 民辦職業(yè)培訓(xùn)方案模板
- 04S519小型排水構(gòu)筑物(含隔油池)圖集
- 旅居養(yǎng)老可行性方案
- 中國焦慮障礙防治指南
評(píng)論
0/150
提交評(píng)論