程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python異常處理--官網摘錄

編輯:Python

異常層次結構

內置異常的類層級結構如下:

BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- EncodingWarning
+-- ResourceWarning

 異常名稱和描述:

基類描述BaseException所有內置異常的基類。 它不應該被用戶自定義類直接繼承 (這種情況請使用 Exception)。Exception所有內置的非系統退出類異常都派生自此類。 所有用戶自定義異常也應當派生自此類。ArithmeticError此基類用於派生針對各種算術類錯誤而引發的內置異常: OverflowError, ZeroDivisionError, FloatingPointError。BufferError當與 緩沖區 相關的操作無法執行時將被引發。LookupError此基類用於派生當映射或序列所使用的鍵或索引無效時引發的異常: IndexError, KeyError。 這可以通過 codecs.lookup() 來直接引發。具體異常描述AssertionError當 assert 語句失敗時將被引發。AttributeError當屬性引用 (參見 屬性引用) 或賦值失敗時將被引發。 (當一個對象根本不支持屬性引用或屬性賦值時則將引發 TypeError。)EOFError當 input() 函數未讀取任何數據即達到文件結束條件 (EOF) 時將被引發。 (另外,io.IOBase.read() 和 io.IOBase.readline() 方法在遇到 EOF 則將返回一個空字符串。)FloatingPointError目前未被使用。GeneratorExit當一個 generator 或 coroutine 被關閉時將被引發;參見 generator.close() 和 coroutine.close()。 它直接繼承自 BaseException 而不是 Exception,因為從技術上來說它並不是一個錯誤。ImportError當 import 語句嘗試加載模塊遇到麻煩時將被引發。 並且當 from ... import 中的 "from list" 存在無法找到的名稱時也會被引發。ModuleNotFoundErrorImportError 的子類,當一個模塊無法被定位時將由 import 引發。 當在 sys.modules 中找到 None 時也會被引發。IndexError當序列抽取超出范圍時將被引發。 (切片索引會被靜默截短到允許的范圍;如果指定索引不是整數則 TypeError 會被引發。)KeyError當在現有鍵集合中找不到指定的映射(字典)鍵時將被引發。KeyboardInterrupt用戶按下中斷鍵 (通常為 Control-C 或 Delete) 時將被引發。 在執行期間,會定期檢測中斷信號。 該異常繼承自 BaseException 以確保不會被處理 Exception 的代碼意外捕獲,這樣可以避免退出解釋器。MemoryError當一個操作耗盡內存但情況仍可(通過刪除一些對象)進行挽救時將被引發。 關聯的值是一個字符串,指明是哪種(內部)操作耗盡了內存。 請注意由於底層的內存管理架構(C 的 malloc() 函數),解釋器也許並不總是能夠從這種情況下完全恢復;但它畢竟可以引發一個異常,這樣就能打印出棧回溯信息,以便找出導致問題的失控程序。NameError當某個局部或全局名稱未找到時將被引發。 此異常僅用於非限定名稱。 關聯的值是一條錯誤信息,其中包含未找到的名稱。NotImplementedError此異常派生自 RuntimeError。 在用戶自定義的基類中,抽象方法應當在其要求所派生類重載該方法,或是在其要求所開發的類提示具體實現尚待添加時引發此異常。OSError此異常在一個系統函數返回系統相關的錯誤時將被引發,此類錯誤包括 I/O 操作失敗例如 "文件未找到" 或 "磁盤已滿" 等(不包括非法參數類型或其他偶然性錯誤)。OverflowError當算術運算的結果大到無法表示時將被引發。 這對整數來說不可能發生(寧可引發 MemoryError 也不會放棄嘗試)。 但是出於歷史原因,有時也會在整數超出要求范圍的情況下引發 OverflowError。 因為在 C 中缺少對浮點異常處理的標准化,大多數浮點運算都不會做檢查。RecursionError此異常派生自 RuntimeError。 它會在解釋器檢測發現超過最大遞歸深度 (參見 sys.getrecursionlimit()) 時被引發。ReferenceError此異常將在使用 weakref.proxy() 函數所創建的弱引用來訪問該引用的某個已被作為垃圾回收的屬性時被引發。RuntimeError當檢測到一個不歸屬於任何其他類別的錯誤時將被引發。 關聯的值是一個指明究竟發生了什麼問題的字符串。StopIteration由內置函數 next() 和 iterator 的 __next__() 方法所引發,用來表示該迭代器不能產生下一項。StopAsyncIteration必須由一個 asynchronous iterator 對象的 __anext__() 方法來引發以停止迭代操作。SyntaxError當解析器遇到語法錯誤時引發。 這可以發生在 import 語句,對內置函數 compile(), exec() 或 eval() 的調用,或是讀取原始腳本或標准輸入(也包括交互模式)的時候。IndentationError與不正確的縮進相關的語法錯誤的基類。 這是 SyntaxError 的一個子類。TabError當縮進包含對制表符和空格符不一致的使用時將被引發。 這是 IndentationError 的一個子類。SystemError當解釋器發現內部錯誤,但情況看起來尚未嚴重到要放棄所有希望時將被引發。 關聯的值是一個指明發生了什麼問題的字符串(表示為低層級的符號)。SystemExit此異常由 sys.exit() 函數引發。 它繼承自 BaseException 而不是 Exception 以確保不會被處理 Exception 的代碼意外捕獲。 這允許此異常正確地向上傳播並導致解釋器退出。 如果它未被處理,則 Python 解釋器就將退出;不會打印任何棧回溯信息。 構造器接受的可選參數與傳遞給 sys.exit() 的相同。 如果該值為一個整數,則它指明系統退出狀態碼(會傳遞給 C 的 exit() 函數);如果該值為 None,則退出狀態碼為零;如果該值為其他類型(例如字符串),則會打印對象的值並將退出狀態碼設為一。TypeError當一個操作或函數被應用於類型不適當的對象時將被引發。 關聯的值是一個字符串,給出有關類型不匹配的詳情。UnboundLocalError當在函數或方法中對某個局部變量進行引用,但該變量並未綁定任何值時將被引發。 此異常是 NameError 的一個子類。UnicodeError當發生與 Unicode 相關的編碼或解碼錯誤時將被引發。 此異常是 ValueError 的一個子類。UnicodeEncodeError當在編碼過程中發生與 Unicode 相關的錯誤時將被引發。 此異常是 UnicodeError 的一個子類。UnicodeDecodeError當在解碼過程中發生與 Unicode 相關的錯誤時將被引發。 此異常是 UnicodeError 的一個子類。UnicodeTranslateError在轉寫過程中發生與 Unicode 相關的錯誤時將被引發。 此異常是 UnicodeError 的一個子類。ValueError當操作或函數接收到具有正確類型但值不適合的參數,並且情況不能用更精確的異常例如 IndexError 來描述時將被引發。ZeroDivisionError當除法或取余運算的第二個參數為零時將被引發。 關聯的值是一個字符串,指明操作數和運算的類型。OS 異常描述:下列異常均為 OSError 的子類,它們將根據系統錯誤代碼被引發。BlockingIOError當操作將阻塞設置為非阻塞操作的對象(例如套接字)時引發。對應於 errno EAGAIN、EALREADY、EWOULDBLOCK 和 EINPROGRESS。ChildProcessError當對子進程的操作失敗時引發。對應於 errno ECHILD。ConnectionError與連接相關問題的基類。BrokenPipeErrorConnectionError 的子類,在另一端已關閉時嘗試在管道上寫入,或嘗試在已關閉寫入的套接字上寫入時引發。對應於 errno EPIPE 和 ESHUTDOWN。ConnectionAbortedErrorConnectionError 的子類,在對等方中止連接嘗試時引發。對應於 errno ECONABORTED。ConnectionRefusedErrorConnectionError 的子類,當連接嘗試被對等方拒絕時引發。對應於 errno ECONNREFUSED。ConnectionResetErrorConnectionError 的子類,在對等方重置連接時引發。對應於 errno ECONNRESET。FileExistsError在嘗試創建已存在的文件或目錄時引發。對應於 errno EEXIST。FileNotFoundError當請求文件或目錄但不存在時引發。對應於 errno ENOENT。InterruptedError當系統調用被輸入信號中斷時將被引發。 對應於 errno EINTRIsADirectoryError在目錄上請求文件操作(例如 os.remove())時引發。對應於 errno EISDIR。NotADirectoryError當在不是目錄的東西上請求目錄操作(例如 os.listdir())時引發。在大多數 POSIX 平台上,如果操作嘗試打開或遍歷非目錄文件,就好像它是目錄一樣,也可能會引發它。對應於 errno ENOTDIR。PermissionError在嘗試運行沒有足夠訪問權限的操作時引發 - 例如文件系統權限。對應於 errno EACCES 和 EPERM。ProcessLookupError當給定進程不存在時引發。對應於 errno ESRCH。TimeoutError當系統功能在系統級別超時時引發。對應於 errno ETIMEDOUT。警告描述:下列異常被用作警告類別Warning警告類別的基類。UserWarning用戶代碼所產生警告的基類。DeprecationWarning如果所發出的警告是針對其他 Python 開發者的,則以此作為與已棄用特性相關警告的基類。PendingDeprecationWarning對於已過時並預計在未來棄用,但目前尚未棄用的特性相關警告的基類。SyntaxWarning與模糊的語法相關的警告的基類。RuntimeWarning與模糊的運行時行為相關的警告的基類。FutureWarning如果所發出的警告是針對以 Python 所編寫應用的最終用戶的,則以此作為與已棄用特性相關警告的基類。ImportWarning與在模塊導入中可能的錯誤相關的警告的基類。UnicodeWarning與 Unicode 相關的警告的基類。EncodingWarning與編碼格式相關的警告的基類。BytesWarning與 bytes 和 bytearray 相關的警告的基類。ResourceWarning資源使用相關警告的基類。會被默認警告過濾器忽略。 啟用 Python 開發模式 時會顯示此警告。

參考文檔:內置異常 — Python 3.10.6 文檔


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved