版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精品文檔你我共享 Python異常處理體系進行簡 Python的異常處理能力是很強大的,可向用戶準確反饋出錯信息。本文將對 單介紹。 Python內建異常體系結構 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模塊查看異常,需要導入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的異常處理可以向用戶準確反饋出錯信息,所有異常都是基類Exception的子 類。自定義異常都是從基類Exception中繼承。Python自動將所有內建的異常放到內建命 名空間中,所以程序不必導入exceptions模塊即可使用異常。 可以使用的語句結構形式: 方式一:使用try,except語句來捕獲異常,可以有無數個except語句來處理異常,如果 所有except語句都沒捕獲到,則拋出異常到調用此方法的函數內處理
7、,直到系統(tǒng)的主函數來 處理。 使用except子句需要注意的事情,就是多個except子句截獲異常時,如果各個異常類 之間具有繼承關系,則子類應該寫在前面,否則父類將會直接截獲子類異常。放在后面的子 類異常也就不會執(zhí)行到了。 try 方式二:當沒有異常發(fā)生的時候執(zhí)行else語句 try: block 1 except excpetion,data.: block else: block 方式三:fin ally語句,不管有沒有發(fā)生異常都將執(zhí)行fin ally語句塊 例如我們在python中打開一個文件進行讀寫操作,我在操作過程中不管是否出現(xiàn)異常, 最終都是要把該文件關閉的。 方式四: try,
8、except,fi nally try: block except: block finally: block 引發(fā)異常 raise exception,data 在Python中,要想引發(fā)異常,最簡單的形式就是輸入關鍵字raise ,后跟要引發(fā)的異常 的名稱。 異常名稱標識出具體的類:Python異常是那些類的對象。執(zhí)行raise語句時,Python會創(chuàng) 建指定的異常類的一個對象。 raise語句還可指定對異常對象進行初始化的參數。為此,請在異常類的名稱后添加一 個逗號以及指定的參數(或者由參數構成的一個元組)。 except MyError: print a error ValueErro
9、r, invalidargument 捕捉到的內容為: 精品文檔你我共享 type = VauleError message = invalid argument 異常處理的一些其它用途 除了處理實際的錯誤條件之外,對于異常還有許多其它的用處。在標準Python庫中 一個普通的用法就是試著導入一個模塊,然后檢查是否它能使用。 導入一個并不存在的模塊將引發(fā)一個ImportError異常。你可以使用這種方法來定義 多級別的功能一一依靠在運行時哪個模塊是有效的,或支持多種平臺(即平臺特定代碼被分 離到不同的模塊中)。 你也能通過創(chuàng)建一個從內置的Exception類繼承的類定義你自己的異常,然后使用r
10、 aise命令引發(fā)你的異常。如果你對此感興趣,請看進一步閱讀的部分。 下面的例子演示了如何使用異常支持特定平臺功能。代碼來自getpass模塊,一個從 用戶獲得口令的封裝模塊。獲得口令在UNIX、Windows和Mac OS平臺上的實現(xiàn)是不 同的,但是這個代碼封裝了所有的不同之處。 例支持特定平臺功能 # 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獨有的一個模塊,它提供了對于輸入終端的底層控制。 如果這個模塊無效(因為它不在你的系統(tǒng)上,或你的系統(tǒng)不支持它),則導入失敗,Pyt hon引發(fā)我們捕捉的ImportError異常。 OK,我們沒有termios,所以讓我們試試msvcrt,它是 Windows 獨有的一個模塊, 可以提供在 Microsoft Visual C+運行服務中的許多有用的函數的一個API。如果導入失 敗, Python會引發(fā)我們捕捉的ImportError異常。 如果前兩個不能工作,我們試著從EasyDialogs 導入一個函數,它是
12、Mac OS獨有 的一個模塊,提供了各種各樣類型的彈出對話框。再一次,如果導入失敗,Python會引發(fā) 一個我們捕捉的ImportError異常。 這些平臺特定的模塊沒有一個有效(有可能,因為Python已經移植到了許多不同的平 臺上了),所以我們需要回頭使用一個缺省口令輸入函數(這個函數定義在 getpass模塊中 的別的地方)。注意我們在這里所做的:我們將函數default_getpass 賦給變量getpass 。 AAAAAA 如果你讀了官方getpass文檔,它會告訴你getpass模塊定義了一個getpass函數。它 是這樣做的:通過綁定getpass到正確的函數來適應你的平臺。然后當你調用 getpass 函數時,你實際上調用了平臺特定的函數,是這段代碼已經為你設置好的。你不需要知道或 關心你的代碼正運行在何種平臺上;只要調用getpass,則它總能正確處理。 一個try.except塊可以有一條 else子句,就像if語句。如果在 try塊中沒有異常 引發(fā),然后 else子句被執(zhí)行。在本例中,那就意味著如果from EasyDial
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教育儲值卡銷售與教育資源整合合同3篇
- 二零二五版環(huán)保項目環(huán)保宣傳教育分包合同3篇
- 二零二五年度果園租賃附帶果樹修剪與施肥服務合同3篇
- 二零二五年度賓館能源審計服務合同范本3篇
- 二零二五版危險化學品運輸司機安全責任合同3篇
- 2024年速凍粘玉米購銷合同的支付方式
- 2024鮮魚養(yǎng)殖與市場風險防控合作協(xié)議3篇
- 二零二五年度駕校場地租賃與智能語音教學合同3篇
- 二零二五年度酒店租賃經營聯(lián)合運營合同范本3篇
- 二零二五年度高端酒吧場地租賃服務合同3篇
- 2024-2025學年八年級上學期1月期末物理試題(含答案)
- 2025年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 制造車間用洗地機安全操作規(guī)程
- 2025河南省建筑安全員-A證考試題庫及答案
- 商場電氣設備維護勞務合同
- 油氣田智能優(yōu)化設計-洞察分析
- 陜西2020-2024年中考英語五年真題匯編學生版-專題09 閱讀七選五
- 磚混結構基礎加固技術方案
- 助產專業(yè)的職業(yè)生涯規(guī)劃
- 新《國有企業(yè)管理人員處分條例》知識競賽考試題庫500題(含答案)
- 骨質疏松護理
評論
0/150
提交評論