版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第11章異常處理2主要內(nèi)容1.異常的基本概念2.異常捕獲與處理,try,except,else,finally3.拋出異常異常程序在運行時,如果Python解釋器遇到一個錯誤,會停止程序的執(zhí)行,并提示一些錯誤信息,這就是異常。>>>x=10>>>y=0>>>z=x/yTraceback(mostrecentcalllast):File"<pyshell#12>",line1,in<module>z=x/yZeroDivisionError:divisionbyzeroPython內(nèi)置異常異常錯誤原因AssertionError在assert語句失敗時引發(fā)。AttributeError在屬性分配或引用失敗時引發(fā)。EOFError當(dāng)input()函數(shù)達到文件結(jié)束條件時引發(fā)。FloatingPointError當(dāng)浮點運算失敗時引發(fā)。GeneratorExit在close()調(diào)用生成器的方法時引發(fā)。ImportError在找不到導(dǎo)入的模塊時引發(fā)。IndexError當(dāng)序列的索引超出范圍時引發(fā)。KeyError在字典中找不到鍵時引發(fā)。KeyboardInterrupt當(dāng)用戶按下中斷鍵(Ctrl+c或Delete)時引發(fā)。MemoryError在操作內(nèi)存不足時引發(fā)。NameError在本地或全局范圍內(nèi)找不到變量時引發(fā)。Python內(nèi)置異常異常錯誤原因NotImplementedError尚未實現(xiàn)的方法。OSError當(dāng)系統(tǒng)操作導(dǎo)致系統(tǒng)相關(guān)錯誤時引發(fā)。OverflowError當(dāng)算術(shù)運算的結(jié)果太大而無法表示時引發(fā)。ReferenceError在使用弱引用代理訪問垃圾收集的引用對象時引發(fā)。RuntimeError當(dāng)錯誤不屬于任何其他類別時引發(fā)。StopIteration由next()函數(shù)引發(fā),以指示迭代器沒有其他項目可返回。SyntaxError遇到語法錯誤時由解析器引發(fā)。IndentationError縮進不正確時引發(fā)。TabError當(dāng)縮進由不一致的制表符和空格組成時引發(fā)。Python內(nèi)置異常異常錯誤原因SystemError在解釋器檢測到內(nèi)部錯誤時引發(fā)。SystemExit由sys.exit()功能引發(fā)。TypeError當(dāng)函數(shù)或操作應(yīng)用于錯誤類型的對象時引發(fā)。UnboundLocalError在對函數(shù)或方法中的局部變量進行引用但沒有值綁定到該變量時引發(fā)。UnicodeError在發(fā)生與Unicode相關(guān)的編碼或解碼錯誤時引發(fā)。UnicodeEncodeError在編碼過程中發(fā)生與Unicode相關(guān)的錯誤時引發(fā)。UnicodeDecodeError在解碼期間發(fā)生與Unicode相關(guān)的錯誤時引發(fā)。UnicodeTranslateError在翻譯過程中發(fā)生Unicode相關(guān)錯誤時引發(fā)。ValueError當(dāng)函數(shù)獲取正確類型但值不正確的參數(shù)時引發(fā)。ZeroDivisionError當(dāng)除法或模運算的第二個操作數(shù)為零時引發(fā)常見異常1.AssertionError:斷言語句失敗2.AttributeError:嘗試訪問未知的對象屬性3.IndexError:索引超出序列的范圍4.KeyError:字典中查找一個不存在的關(guān)鍵字5.OSError:操作系統(tǒng)產(chǎn)生的異常6.NameError:嘗試訪問一個不存在的變量7.SyntaxError:Python的語法錯誤8.TypeError:不同類型間的無效操作9.ZeroDivisionError:除數(shù)為零異常常見異常1.AssertionError:斷言語句失敗。assert語句后邊的條件為False是拋出AssertionError異常。>>>x=10>>>assertx<20>>>assertx<5Traceback(mostrecentcalllast):File"<pyshell#23>",line1,in<module>assertx<5AssertionError>>>常見異常2.AttributeError:嘗試訪問未知的對象屬性>>>L1=['a','b','a','c','a']>>>print(L1.count('a'))3>>>print(L1.len())Traceback(mostrecentcalllast):File"<pyshell#34>",line1,in<module>print(L1.len())AttributeError:'list'objecthasnoattribute'len'>>>常見異常3.IndexError:索引超出序列的范圍>>>L1=['a','b','a','c','a']>>>print(L1[4])a>>>print(L1[5])Traceback(mostrecentcalllast):File"<pyshell#39>",line1,in<module>print(L1[5])IndexError:listindexoutofrange>>>常見異常4.KeyError:字典中查找一個不存在的關(guān)鍵字訪問字典時,關(guān)鍵字不存在引發(fā)KeyError錯誤。>>>d1={'x':1,'y':2,'z':3}>>>print(d1['x'])1>>>print(d1['xx'])Traceback(mostrecentcalllast):File"<pyshell#42>",line1,in<module>print(d1['xx'])KeyError:'xx'>>>常見異常5.FileNotFoundError:文件找不到的異常。>>>withopen("d:\\aaa.txt")asr: print(r.read())
Traceback(mostrecentcalllast):File"<pyshell#48>",line1,in<module>withopen("d:\\aaa.txt")asr:FileNotFoundError:[Errno2]Nosuchfileordirectory:'d:\\aaa.txt'>>>常見異常6.NameError:嘗試訪問一個不存在的變量變量要先賦值后使用。如果訪問的變量不存在,引發(fā)NameError。>>>print(xxx)Traceback(mostrecentcalllast):File"<pyshell#51>",line1,in<module>print(xxx)NameError:name'xxx'isnotdefined常見異常7.SyntaxError:Python的語法錯誤>>>input"x:"SyntaxError:invalidsyntax>>>print"x"SyntaxError:Missingparenthesesincallto'print'.Didyoumeanprint("x")?常見異常8.TypeError:不同類型間的無效操作>>>a=5+"10"Traceback(mostrecentcalllast):File"<pyshell#58>",line1,in<module>a=5+"10"TypeError:unsupportedoperandtype(s)for+:'int'and'str'常見異常9.ZeroDivisionError:除數(shù)為零異常>>>a=5/0Traceback(mostrecentcalllast):File"<pyshell#62>",line1,in<module>a=5/0ZeroDivisionError:divisionbyzero異常捕獲與處理程序在出現(xiàn)異常時,可以捕獲這些異常,進行異常處理。簡單的異常捕獲:try:檢測范圍ExceptException[asreason]:出現(xiàn)異常后的處理代碼簡單的異常處理【例11.1】簡單的異常處理。try:f=open("d:\Python\\xx.txt","r")print(f.read())f.close()exceptExceptionasreason:
print(reason)#輸出異常信息print("文件操作失誤")Exception不區(qū)分異常類型,能處理任何錯誤reason獲取錯誤信息多種異常處理在編程時需要針對不同類型的異常,做出不同的響應(yīng)。try語句中多個except分別處理不同異常。try:檢測范圍exceptException1:處理異常1的語句[exceptException2:處理異常2的語句]...[exceptExceptionasreason:
處理異常的語句]一旦某個except捕獲了異常,后面剩余的except子句將不會再執(zhí)行。except可以有1個或更多。多種異常處理【例11.2】多種異常處理。try:a=int(input("輸入a:"))b=int(input("輸入b:"))c=a/bprint(c)d=5+"10"exceptValueError:#1print("您輸入了錯誤的數(shù)字!")exceptZeroDivisionError:#2print("被0除錯誤!")exceptExceptionasreason:print("其他錯誤!",reason)print("運行到這里!")#3excep后執(zhí)行合并異常處理在一個except子句中,使用圓括號將多個異常括起來,中間用逗號隔開,即可同時處理多個異常?!纠?1.3】合并異常處理——輸入兩個數(shù),輸出它們的商。#eg1103.pytry:var1,var2=map(float,input("輸入兩個數(shù)字:").split())result=var1/var2except(ValueError,ZeroDivisionError):print("輸入了錯誤的數(shù)字或除數(shù)為0錯誤!")exceptExceptionasreason:print("其他錯誤:{}".format(reason))else:print("{}/{}={}".format(var1,var2,result))完整的異常捕獲語句try:
.......#嘗試執(zhí)行的代碼except錯誤類型1:
處理語句1#針對錯誤類型1,對應(yīng)的代碼處理except錯誤類型2:處理語句2#針對錯誤類型2,對應(yīng)的代碼處理except(錯誤類型3,錯誤類型4):
處理與句3、4
#針對錯誤類型3和4,對應(yīng)的代碼處理exceptExceptionasresult:
print(result)
#打印錯誤信息else:處理語句#沒有異常才會執(zhí)行的代碼finally:處理語句#無論是否有異常,都會執(zhí)行的代碼完整的異常捕獲語句exceptExceptionasresult:不管是什么異常,都可以處理。else:只要沒有異常發(fā)生,就會執(zhí)行else的語句。finally:不管是否有異常,都要執(zhí)行。完整的異常捕獲語句【例11.3】多種異常處理。try:a=int(input("輸入a:"))b=int(input("輸入b:"))c=a/bprint(c)exceptValueError:print("您輸入了錯誤的數(shù)字!")exceptZeroDivisionError:print("被0除錯誤!")exceptExceptionasresult:print("錯誤信息:",result)else:print("程序運行正確,無異常!")finally:print("無論是否有異常,都要執(zhí)行")print("這句還要執(zhí)行!")異常的傳遞性當(dāng)函數(shù)或方法執(zhí)行出現(xiàn)異
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《工傷事故管理辦法》課件
- 《服裝品牌設(shè)計策劃》課件
- 單位管理制度集合大合集【職工管理篇】
- 單位管理制度集粹匯編【員工管理篇】十篇
- 《學(xué)前兒童的注意》課件
- 單位管理制度合并匯編職工管理篇十篇
- 單位管理制度分享合集人力資源管理十篇
- 單位管理制度范文大合集人事管理十篇
- 單位管理制度范例合集【職員管理】
- 單位管理制度呈現(xiàn)大合集【職員管理篇】
- 手術(shù)室護理組長競聘
- 電力系統(tǒng)繼電保護試題以及答案(二)
- 小學(xué)生防打架斗毆安全教育
- 2024-2025學(xué)年九年級英語上學(xué)期期末真題復(fù)習(xí) 專題09 單詞拼寫(安徽專用)
- 網(wǎng)絡(luò)運營代銷合同范例
- 2024年新人教版七年級上冊歷史 第14課 絲綢之路的開通與經(jīng)營西域
- 《臨床放射生物學(xué)》課件
- 植保無人機安全飛行
- 2024年10月自考04532財務(wù)會計專題試題及答案含解析
- 醫(yī)療糾紛事件匯報
- 2024年村干部個人工作總結(jié)例文(3篇)
評論
0/150
提交評論