版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第十二章程序錯誤與異常處理異常處理本章小結(jié)目錄CONTENTS12.1程序錯誤12.212.3程序錯誤12.112.1程序錯誤程序錯誤是指由于程序本身的錯誤而導致的功能失常、死機、數(shù)據(jù)丟失、非正常中斷等現(xiàn)象。Python中的程序錯誤可以分為語法錯誤、運行時錯誤和邏輯錯誤3種。例12-1語法錯誤程序代碼如下:>>>t=1>>>ift>0File"<stdin>",line1ift>0^SyntaxError:invalidsyntax例12-2運行時錯誤實例程序代碼如下:>>>alist=[0,1,2,3,4,5]>>>alist[7]Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>IndexError:listindexoutofrange例12-3邏輯錯誤示例程序代碼如下:>>>dadage=56>>>sonage=dadage/2>>>print('兒子的年齡是',sonage)兒子的年齡是28.012.2異常處理異常(exception)是指程序運行時引發(fā)的錯誤。對于大多數(shù)的異常,程序不會主動處理,只是通過各種信息進行錯誤提示。這些異常得不到正確的處理將會導致程序停止運行。合理地使用Python異常處理機制可以避免一些因為用戶輸入錯誤或其他未知原因所造成的程序崩潰或終止,同時對晦澀難懂的錯誤進行提示,友好地展示給最終用戶,便于用戶更好地處理異常,使程序具有更強的健壯性、容錯性。異常處理主要包括以下兩個階段。(1)拋出并引發(fā)異常。Python解釋器檢查到錯誤并認定為異常,拋出異常。Python會自動引發(fā)異常,也可以通過raise顯式地引發(fā)異常。(2)檢測并處理異常。檢測異常,程序忽略異常繼續(xù)執(zhí)行,或者程序終止并處理異常。例12-4異常示例程序代碼如下:>>>a=1/0Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>ZeroDivisionError:divisionbyzero12.2.1try…except語句try…except語句的語法格式如下:try:
語句塊1 #檢測異常except異常類型[as異常數(shù)據(jù)]:
語句塊2 #處理異常其中,語句塊1中放置可能出現(xiàn)異常的代碼,語句塊2用于處理異常。當程序運行到try語句后,Python會標記該語句在程序中的位置,并運行語句塊1;當語句塊1出現(xiàn)異常時,程序跳轉(zhuǎn)到語句塊2開始執(zhí)行;如果語句塊1無異常,則不執(zhí)行語句塊2。需要注意的是,如果不確定異常的類型,則可以使用BaseException進行判斷。BaseException是所有內(nèi)建異常的基類,通過它可以捕獲所有類型的異常。在使用try…except語句的過程中,需要遵循以下原則。(1)不建議使用該語句來代替常規(guī)的檢測類語句,如if…else語句。(2)應避免過多地使用異常處理機制,只在確實需要時使用。(3)在檢測異常時,應盡量精準,并針對不同類型的異常設計不同的代碼進行處理。例12-5使用try…except語句處理異常try:m=3/eval(input("請輸入:"))print(m)exceptZeroDivisionErrorast:print(t)運行結(jié)果如下:請輸入:0divisionbyzero例12-6使用BaseException判斷異常類型程序代碼如下:try:m=int(input("請輸入:"))exceptBaseExceptionast:print(t)運行結(jié)果如下:請輸入:minvalidliteralforint()withbase10:'m'12.2.2try…except…else語句try…except…else語句的語法格式如下:try:
語句塊1 #檢測異常except異常類型[as異常數(shù)據(jù)]:
語句塊2 #處理異常else:
語句塊3 #無異常其中,語句塊1中放置可能出現(xiàn)異常的代碼,語句塊2用于處理異常,語句塊3為其他代碼。如果語句塊1被檢測到異常,則執(zhí)行語句塊2;否則執(zhí)行完語句塊1,接著執(zhí)行語句塊3。例12-7使用try…except…else語句處理異常程序代碼如下:at=("tom","lily","lisa","ling")foriinrange(4,1,-1):try:print(at[i])exceptIndexErrorasie:print(ie)else:print(i)運行結(jié)果如下:tupleindexoutofrangeling312.2.3try…except…finally語句try…except…finally語句的語法格式如下:try:
語句塊1 #檢測異常except異常類型as數(shù)據(jù): #將捕獲的異常對象賦值給error
語句塊2 #處理異常finally:
語句塊3 如果語句塊1被檢測到異常,則執(zhí)行語句塊2,接著執(zhí)行語句塊3;如果語句塊1未被檢測到異常,則在執(zhí)行完語句塊1之后執(zhí)行語句塊3。例12-8使用try…except…finally語句處理異常程序代碼如下:while1:try:m=3/eval(input("請輸入:"))print(m)exceptZeroDivisionErrorast:print(t)finally:print("必須執(zhí)行語句")運行結(jié)果如下:請輸入:31.0必須執(zhí)行語句請輸入:0divisionbyzero必須執(zhí)行語句12.3本章小結(jié)本章介紹了程序設計過程中可能出現(xiàn)的3種錯誤,并分別舉例說明
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025西安鄠邑區(qū)秦渡中心衛(wèi)生院牛東分院招聘參考考試試題及答案解析
- 2025年西安市長安醫(yī)院招聘(25人)參考筆試題庫附答案解析
- 2026年江西省第五人民醫(yī)院招聘編制外工作人員1人備考筆試題庫及答案解析
- 西南民族大學2026年人才引進考試參考試題及答案解析
- 2025海南大學儋州校區(qū)醫(yī)院招聘高層次人才2人參考考試題庫及答案解析
- 網(wǎng)吧眾籌合同范本
- 網(wǎng)板噴塑合同范本
- 耕地核查合同范本
- 職場小白合同范本
- 職稱證使用協(xié)議書
- 拒絕臟話文明用語(課件)-小學生主題班會
- DBJ51-T 139-2020 四川省玻璃幕墻工程技術(shù)標準
- 一帶一路教學課件教學講義
- 中醫(yī)熱敏灸療法課件
- 工廠蟲害控制分析總結(jié)報告
- 回顧性中醫(yī)醫(yī)術(shù)實踐資料(醫(yī)案)表
- 延期交房起訴狀
- 廣東省消防安全重點單位消防檔案
- 高考日語形式名詞わけ、べき、はず辨析課件
- 2023學年完整公開課版節(jié)氣門
- 小學美術(shù)《年畫》課件
評論
0/150
提交評論