版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精品文檔你我共享 Python異常處理體系進(jìn)行簡(jiǎn) Python的異常處理能力是很強(qiáng)大的,可向用戶準(zhǔn)確反饋出錯(cuò)信息。本文將對(duì) 單介紹。 Python內(nèi)建異常體系結(jié)構(gòu) The class hierarchy for built-in exceptions is: BaseException +- SystemExit | +- KeyboardInterrupt +- GeneratorExit +- Exception +- StopIteration +- StandardError |+- BufferError |+- ArithmeticError |+- FloatingPointEr
2、ror |+- OverflowError |+- ZeroDivisionError |+- AssertionError |+- AttributeError |+- EnvironmentError AAAAAA |+- IOError |+- WindowsError (Windows) |+- VMSError (VMS) |+- EOFError |+- ImportError |+- LookupError I | +- KeyError +- MemoryError +- NameError |+- UnboundLocalError |+- ReferenceError |+
3、- RuntimeError |+- NotlmplementedError |+- SyntaxError |+- IndentationError |+- TabError |+- SystemError |+- TypeError |+- ValueError |+- UnicodeError |+- UnicodeEncodeError |+- UnicodeTranslateError +- Warning +- DeprecationWarning +- PendingDeprecationWarning +- RuntimeWarning +- SyntaxWarning +-
4、UserWarning +- FutureWarning +- ImportWarning +- UnicodeWarning +- BytesWarning 捕獲異常的方式 方法一:捕獲所有的異常 捕獲異常的第一種方式,捕獲所有的異常 try: except Exception,data: print Exception,:,data 輸出:v type exceptions.Exception: local variableb referenced before assignment 方法二:采用traceback模塊查看異常,需要導(dǎo)入traceback模塊 捕獲異常的第二種方式,使用tr
5、aceback 查看異常 except: print traceback.print_exc() 輸出: Traceback (most recent call last): File test.py, line 20, in main UnboundLocalError:local variable b referenced before assignmen 方法三:采用sys模塊回溯最后的異常 捕獲異常的第三種方式,使用sys模塊捕獲異常 b = c except: info = sys.exc_info() print info printinfo0 printinfo1 輸出: (,
6、UnboundLocalError(local variable b referenced before assignment,), ) Python異常體系介紹 Python的異常處理可以向用戶準(zhǔn)確反饋出錯(cuò)信息,所有異常都是基類(lèi)Exception的子 類(lèi)。自定義異常都是從基類(lèi)Exception中繼承。Python自動(dòng)將所有內(nèi)建的異常放到內(nèi)建命 名空間中,所以程序不必導(dǎo)入exceptions模塊即可使用異常。 可以使用的語(yǔ)句結(jié)構(gòu)形式: 方式一:使用try,except語(yǔ)句來(lái)捕獲異常,可以有無(wú)數(shù)個(gè)except語(yǔ)句來(lái)處理異常,如果 所有except語(yǔ)句都沒(méi)捕獲到,則拋出異常到調(diào)用此方法的函數(shù)內(nèi)處理
7、,直到系統(tǒng)的主函數(shù)來(lái) 處理。 使用except子句需要注意的事情,就是多個(gè)except子句截獲異常時(shí),如果各個(gè)異常類(lèi) 之間具有繼承關(guān)系,則子類(lèi)應(yīng)該寫(xiě)在前面,否則父類(lèi)將會(huì)直接截獲子類(lèi)異常。放在后面的子 類(lèi)異常也就不會(huì)執(zhí)行到了。 try 方式二:當(dāng)沒(méi)有異常發(fā)生的時(shí)候執(zhí)行else語(yǔ)句 try: block 1 except excpetion,data.: block else: block 方式三:fin ally語(yǔ)句,不管有沒(méi)有發(fā)生異常都將執(zhí)行fin ally語(yǔ)句塊 例如我們?cè)趐ython中打開(kāi)一個(gè)文件進(jìn)行讀寫(xiě)操作,我在操作過(guò)程中不管是否出現(xiàn)異常, 最終都是要把該文件關(guān)閉的。 方式四: try,
8、except,fi nally try: block except: block finally: block 引發(fā)異常 raise exception,data 在Python中,要想引發(fā)異常,最簡(jiǎn)單的形式就是輸入關(guān)鍵字raise ,后跟要引發(fā)的異常 的名稱(chēng)。 異常名稱(chēng)標(biāo)識(shí)出具體的類(lèi):Python異常是那些類(lèi)的對(duì)象。執(zhí)行raise語(yǔ)句時(shí),Python會(huì)創(chuàng) 建指定的異常類(lèi)的一個(gè)對(duì)象。 raise語(yǔ)句還可指定對(duì)異常對(duì)象進(jìn)行初始化的參數(shù)。為此,請(qǐng)?jiān)诋惓n?lèi)的名稱(chēng)后添加一 個(gè)逗號(hào)以及指定的參數(shù)(或者由參數(shù)構(gòu)成的一個(gè)元組)。 except MyError: print a error ValueErro
9、r, invalidargument 捕捉到的內(nèi)容為: 精品文檔你我共享 type = VauleError message = invalid argument 異常處理的一些其它用途 除了處理實(shí)際的錯(cuò)誤條件之外,對(duì)于異常還有許多其它的用處。在標(biāo)準(zhǔn)Python庫(kù)中 一個(gè)普通的用法就是試著導(dǎo)入一個(gè)模塊,然后檢查是否它能使用。 導(dǎo)入一個(gè)并不存在的模塊將引發(fā)一個(gè)ImportError異常。你可以使用這種方法來(lái)定義 多級(jí)別的功能一一依靠在運(yùn)行時(shí)哪個(gè)模塊是有效的,或支持多種平臺(tái)(即平臺(tái)特定代碼被分 離到不同的模塊中)。 你也能通過(guò)創(chuàng)建一個(gè)從內(nèi)置的Exception類(lèi)繼承的類(lèi)定義你自己的異常,然后使用r
10、 aise命令引發(fā)你的異常。如果你對(duì)此感興趣,請(qǐng)看進(jìn)一步閱讀的部分。 下面的例子演示了如何使用異常支持特定平臺(tái)功能。代碼來(lái)自getpass模塊,一個(gè)從 用戶獲得口令的封裝模塊。獲得口令在UNIX、Windows和Mac OS平臺(tái)上的實(shí)現(xiàn)是不 同的,但是這個(gè)代碼封裝了所有的不同之處。 例支持特定平臺(tái)功能 # Bind the name getpass to the appropriate function try: import termios, TERMIOS except ImportError: except ImportError: getpass = default_getpass e
11、lse: getpass = unix_getpass termios是UNIX獨(dú)有的一個(gè)模塊,它提供了對(duì)于輸入終端的底層控制。 如果這個(gè)模塊無(wú)效(因?yàn)樗辉谀愕南到y(tǒng)上,或你的系統(tǒng)不支持它),則導(dǎo)入失敗,Pyt hon引發(fā)我們捕捉的ImportError異常。 OK,我們沒(méi)有termios,所以讓我們?cè)囋噈svcrt,它是 Windows 獨(dú)有的一個(gè)模塊, 可以提供在 Microsoft Visual C+運(yùn)行服務(wù)中的許多有用的函數(shù)的一個(gè)API。如果導(dǎo)入失 敗, Python會(huì)引發(fā)我們捕捉的ImportError異常。 如果前兩個(gè)不能工作,我們?cè)囍鴱腅asyDialogs 導(dǎo)入一個(gè)函數(shù),它是
12、Mac OS獨(dú)有 的一個(gè)模塊,提供了各種各樣類(lèi)型的彈出對(duì)話框。再一次,如果導(dǎo)入失敗,Python會(huì)引發(fā) 一個(gè)我們捕捉的ImportError異常。 這些平臺(tái)特定的模塊沒(méi)有一個(gè)有效(有可能,因?yàn)镻ython已經(jīng)移植到了許多不同的平 臺(tái)上了),所以我們需要回頭使用一個(gè)缺省口令輸入函數(shù)(這個(gè)函數(shù)定義在 getpass模塊中 的別的地方)。注意我們?cè)谶@里所做的:我們將函數(shù)default_getpass 賦給變量getpass 。 AAAAAA 如果你讀了官方getpass文檔,它會(huì)告訴你getpass模塊定義了一個(gè)getpass函數(shù)。它 是這樣做的:通過(guò)綁定getpass到正確的函數(shù)來(lái)適應(yīng)你的平臺(tái)。然后當(dāng)你調(diào)用 getpass 函數(shù)時(shí),你實(shí)際上調(diào)用了平臺(tái)特定的函數(shù),是這段代碼已經(jīng)為你設(shè)置好的。你不需要知道或 關(guān)心你的代碼正運(yùn)行在何種平臺(tái)上;只要調(diào)用getpass,則它總能正確處理。 一個(gè)try.except塊可以有一條 else子句,就像if語(yǔ)句。如果在 try塊中沒(méi)有異常 引發(fā),然后 else子句被執(zhí)行。在本例中,那就意味著如果from EasyDial
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化藝術(shù)民辦非企業(yè)機(jī)構(gòu)捐贈(zèng)協(xié)議范本4篇
- 2025年度環(huán)保節(jié)能型建筑材料研發(fā)與應(yīng)用合同3篇
- 2025年度離婚協(xié)議書(shū)中財(cái)產(chǎn)分割及子女撫養(yǎng)費(fèi)調(diào)整范本4篇
- 二零二五版摩托車(chē)駕駛安全培訓(xùn)課程開(kāi)發(fā)合同3篇
- 二零二五年度人工智能技術(shù)研發(fā)合同合4篇
- 二零二五版醫(yī)療健康信息SET協(xié)議共享合同3篇
- 玻璃鋼水箱施工方案
- 建筑設(shè)計(jì)與施工一體化合同(2篇)
- 彩鋼瓦合同范本(2篇)
- 2025年物流行業(yè)風(fēng)險(xiǎn)評(píng)估合作協(xié)議合同3篇
- 2024-2025學(xué)年八年級(jí)上學(xué)期1月期末物理試題(含答案)
- 商場(chǎng)電氣設(shè)備維護(hù)勞務(wù)合同
- 2023年國(guó)家公務(wù)員錄用考試《行測(cè)》真題(行政執(zhí)法)及答案解析
- 2024智慧醫(yī)療數(shù)據(jù)字典標(biāo)準(zhǔn)值域代碼
- 年產(chǎn)12萬(wàn)噸裝配式智能鋼結(jié)構(gòu)項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 醫(yī)療器械經(jīng)銷(xiāo)商會(huì)議
- 《±1100kV特高壓直流換流變壓器使用技術(shù)條件》
- 《風(fēng)電場(chǎng)項(xiàng)目經(jīng)濟(jì)評(píng)價(jià)規(guī)范》(NB-T 31085-2016)
- 五年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 制單員工作總結(jié)
- 數(shù)據(jù)挖掘(第2版)全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論