



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Python中的異常類型及處理方式示例詳解目錄刖呂正文0一/丄/貝曰吉、xAAt.JIRT二、異常的類型三、異常處理四、t介紹五、0亠-八、結(jié)尾n介紹介紹Python是一種面向?qū)ο蟮摹⒔忉屝偷?、通用的、開源的腳本編程語言?,F(xiàn)在市面上Python常的流行,主要是因為它簡單易用,學(xué)習(xí)成本低,比如要實現(xiàn)某個功能,Python可能只需要幾行代碼,而用語言可能需要上百行代碼,因為語言什么都要得從頭開始編碼,而Pytho已經(jīng)內(nèi)置了很多功能模塊,所以,我們只需要導(dǎo)入特定的包,就可以實現(xiàn)想要的效果。正文今天,我們主要來了解一下Pytho中的異常類型以及它們的處理方式。說到異常處理,我們首先要知道什么是異常。其
2、實,異常就是一類事件,當(dāng)它們發(fā)生時,會影響到程序的正常執(zhí)行。一、什么是異常其實,異常就是一類事件,當(dāng)此類事件在程序執(zhí)行過程中發(fā)生時,就會影響程序的正常執(zhí)行。一般情況下,在Python法正常處理程序時就會發(fā)生一個異常,而異常是Python的一種對象類型,用來表示一個錯誤。當(dāng)Pytho腳本發(fā)生異常時我們需要捕獲并處理它,否則程序就會終止。二、異常的類型Python中定義了一些標(biāo)準(zhǔn)的異常類型,具體的異常名稱和對應(yīng)的實際意義,我們可以通過下面的表格來了解。描述異常名稱ystemExiteyboardIntxceptiontoontondithngPontoDiviertionononntndoooyE
3、monbountotIyntandentatonninornttionon所有異常的基類解釋器請求退出用戶中斷執(zhí)行通常是輸入常規(guī)錯誤的基類迭代器沒有更多的值生成器n發(fā)生:異常來通知退出所有的內(nèi)建標(biāo)準(zhǔn)異常的基類所有數(shù)值計算錯誤的基類o浮點計算錯誤數(shù)值運算超出最大限制除)或取模零所有數(shù)據(jù)類型斷言語句失敗對象沒有這個屬性沒有內(nèi)建輸入到達(dá);o操作系統(tǒng)錯誤的基類輸入/輸出操作失敗操作系統(tǒng)錯誤系統(tǒng)調(diào)用失敗導(dǎo)入模塊/對象失敗無效數(shù)據(jù)查詢的基類序列中沒有此索引n映射中沒有這個鍵內(nèi)存溢出錯誤對于Python解釋器不是致命的未聲明初始化對象沒有屬性訪問未初始化的本地變量o弱引用試圖訪問已經(jīng)垃圾回收了的對象般的運行
4、時錯誤尚未實現(xiàn)的方法Python語法錯誤縮進錯誤和空格混用般的解釋器系統(tǒng)錯誤對類型無效的操作傳入無效的參數(shù)Un標(biāo)記nio(相目關(guān)的錯誤o解碼時的錯誤(編碼時錯誤(轉(zhuǎn)換時錯誤teUEn警告的基類n關(guān)于被棄用的特征的警告FutureWarningOverflowWarning關(guān)于構(gòu)造將來語義會有改變的警告舊的關(guān)于自動提升為長整型(long)的警告PendingDeprecationWarning關(guān)于特性將會被廢棄的警告RuntimeWarningSyntaxWarningUserWarning可疑的運行時行為(runtimebehavior)的警告可疑的語法的警告用戶代碼生成的警告其實,在上述表格
5、中列出的異常中,也具備一定的層次關(guān)系,我們可以通過下圖來了解一下。OSError在實際開發(fā)過程中,我們需要寫出健壯性的程序,不希望我們的程序在執(zhí)行過程中遇到了異常就自動終止。序不會因為發(fā)生異常而終止。在編碼過程中,我們可以簡單使用try/except語句來捕捉異常,具體語法如下:行別的代碼呵果在try部份引發(fā)了異常try:語句#運except異常類型語句#如else:語句#如果沒有異常發(fā)生,以II而友二王任jxx任土rm力-帀手*rr,/ahii刁IndcxErrorKcyError熟悉Java的小伙伴都知道,在Java中是通過try.catch語句來捕獲代碼中的異常事件的,在Python中使
6、用什么呢?其實,在Python中是使用try.except語句用來捕獲異常,通過監(jiān)視try語句塊中的錯誤,從而讓except語句捕獲異常信息并進行處理。因此,如果你不想在異常發(fā)生時結(jié)束你的程序,就需要在try語句塊中捕獲相應(yīng)的異常。接下來,我們通過一個代碼實例來具體了解一下try.except的用法。代碼實例:#!/usr/bin/python#-*-coding:UTF-8-*-try:fh=open(test.txt,r)fh.write(“這是一個測試文件,用于測試Python中的異常門exceptIOError:printError:寫入文件失敗else:print內(nèi)容寫入文件成功fh
7、.close()上述代碼的意思是以可讀模式打開一個test.txt文件,然后向文件中寫入一段話:這是一個測試文件,用于測試Python中的異常!因為文件是以可讀模式打開的,所以沒有寫入權(quán)限,肯定會出錯,但是因為是在try代碼塊中,肯定會被對應(yīng)的O錯誤類型捕獲,并輸入提示信息:Error:寫入文件失敗。運行結(jié)果:liuzhempythonlz$liuzhen:pythonlz$pythontest.pyError:寫入文件失收然后,我們修改代碼,#!/usr/bin/python#-*-coding:UTF-8-*-try:fh=open(test.txt,w)fh.write(這是一個測試文件
8、,用于測試Python中的異常門exceptIOError:printError:寫入文件失敗else:print內(nèi)容寫入文件成功lose這時,我們發(fā)現(xiàn)文件能夠正常寫入內(nèi)容了,并且不會觸發(fā)異常事件發(fā)生。運行結(jié)果:liuzhen:p/thonlz$liuzhen:p/thonlz$pythontest.py內(nèi)容寫入文件成功四、try介紹卩kstry的工作原理是,當(dāng)開始一個try語句后,yt就在當(dāng)前程序的上下文中作標(biāo)記,這樣當(dāng)異常出現(xiàn)時就可以回到這里,try子句先執(zhí)行,接下來會發(fā)生什么依賴于執(zhí)行時是否出現(xiàn)異常。大致的情況可以分為兩種,一種是觸發(fā)了異常,另一種是沒有觸發(fā)異常,具體表現(xiàn)如下:如果當(dāng)tr
9、y后的代碼里發(fā)生了異常,yt就跳回到try并執(zhí)行第一個匹配該異常的ee子句,異常處理完畢,控制流就通過整個try語句。如果在try后的代碼里沒有發(fā)生異常,yt將執(zhí)行else語句后的語句,然后控制流通過整個try語句。其實,上面的代碼實例很好的覆蓋了這兩種情況。五、finally紹finall語句塊中的內(nèi)容,無論程序是否發(fā)生了異常都執(zhí)行。這一點和a是類似的,具體我們來看一段代碼:#!/usr/bin/pythonintry:fentestttrfri這是一個測試文件,用于測試yt中的異常eetrrrrintr寫入文件失敗else:rint內(nèi)容寫入文件成功flsefinally:rint異常發(fā)生了
10、,執(zhí)行finally代碼塊上述代碼在原來的基礎(chǔ)上增加了finally代碼塊,發(fā)生了異常,依然會執(zhí)行finally代碼塊。同樣,即使沒有觸發(fā)異常,也會執(zhí)行相應(yīng)的finally代碼塊。感興趣的小伙伴可以自己動手試一下,這里就不演示了。運行結(jié)果:liuzhen:pythonlz$liuzhen:pythonlz$pythontest.pyError:寫入文件失敗亠.異常發(fā)生了,執(zhí)彳亍finally代碼塊八、se介紹在a中a我們可以使用tr語句主動拋出異常,那么在yt中,是否也有類似的關(guān)鍵字呢?答案是肯定的。接下來,我們就來了解一下raise關(guān)鍵字。在編碼過程中,我們可以使用raise語句主動觸發(fā)異常
11、。具體的語法可以參考如下格式:raiseargs,traceba需要注意的是語句中e是異I常的類型(例如,rrrrr),參數(shù)標(biāo)準(zhǔn)異常中任意一種,參數(shù)ar;是自已提供的異常參數(shù)。最后一個參數(shù)tra提可選的,一般為空。實例代碼:sr/bin/pythonintry:fentestttfrite是一個測試文件,用于測試yt中的異常eetrrrrintri寫入文件失敗else:rint內(nèi)容寫入文件成功tryrint拋出自定義異常raiseet這是一個自定義異常事件eetrint自定義異常事件被捕獲flsefinally:rint自定義異常發(fā)生了,執(zhí)行finally代碼塊運行結(jié)果:liuzhen:pythonlz$liuzhen:pythonpythontestpy內(nèi)容寫入文件成功拋岀自定文異常自定義異常事件被捕荻自定義異常發(fā)生了,執(zhí)行finally代碼塊li
溫馨提示
- 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ù)驅(qū)動行業(yè)革新
- 2024-2025學(xué)年人教版高二化學(xué)選擇性必修3配套課件 基礎(chǔ)課時3 有機化合物的分離、提純
- 創(chuàng)新無止境 創(chuàng)業(yè)踐于行
- 小學(xué)課堂數(shù)學(xué)課件
- 管理會計(第三版)教案 模塊九 成本控制
- 企業(yè)防寒防凍知識及注意事項
- 個人租住房合同范例
- 個人相互擔(dān)保合同范例
- 校本課程開發(fā)工作總結(jié)
- 讀后續(xù)寫微技巧情感描寫
- 多功能切菜機的設(shè)計畢業(yè)論文
- AI工業(yè)信息化高價值、高普及、高認(rèn)可之路
- 醫(yī)學(xué)影像學(xué)相關(guān)題目-研究生復(fù)試用
- 高考作文模擬寫作:“雷鋒精神的時代價值”導(dǎo)寫及范文
- 產(chǎn)能分析報告模板及指標(biāo)明細(xì)
- 《中央財政科研項目專家咨詢費管理辦法》財科教〔2017〕128號
- 2023年廣西旅發(fā)置業(yè)集團有限公司招聘筆試題庫及答案解析
- GB/T 9239.1-2006機械振動恒態(tài)(剛性)轉(zhuǎn)子平衡品質(zhì)要求第1部分:規(guī)范與平衡允差的檢驗
- GB/T 6183.1-2000非金屬嵌件六角法蘭面鎖緊螺母
- GB/T 1606-2008工業(yè)碳酸氫鈉
評論
0/150
提交評論