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

Python exception handling - official website excerpt

編輯:Python

異常層次結構

The class hierarchy for built-in exceptions is as follows:

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

 Exception name and description:

基類描述BaseException所有內置異常的基類. 它不應該被用戶自定義類直接繼承 (這種情況請使用 Exception).Exception所有內置的非系統退出類異常都派生自此類. 所有用戶自定義異常也應當派生自此類.ArithmeticError此基類用於派生針對各種算術類錯誤而引發的內置異常: OverflowError, ZeroDivisionError, FloatingPointError.BufferError當與 緩沖區 相關的操作無法執行時將被引發.LookupError此基類用於派生當映射或序列所使用的鍵或索引無效時引發的異常: IndexError, KeyError. 這可以通過 codecs.lookup() to directly cause.具體異常描述AssertionError當 assert 語句失敗時將被引發.AttributeError當屬性引用 (參見 屬性引用) 或賦值失敗時將被引發. (Raised when an object does not support property references or property assignments at all TypeError.)EOFError當 input() 函數未讀取任何數據即達到文件結束條件 (EOF) 時將被引發. (另外,io.IOBase.read() 和 io.IOBase.readline() method is encountered EOF 則將返回一個空字符串.)FloatingPointError目前未被使用.GeneratorExit當一個 generator 或 coroutine 被關閉時將被引發;參見 generator.close() 和 coroutine.close(). 它直接繼承自 BaseException 而不是 Exception,Because technically it's not a bug.ImportError當 import 語句嘗試加載模塊遇到麻煩時將被引發. 並且當 from ... import 中的 "from list" 存在無法找到的名稱時也會被引發.ModuleNotFoundErrorImportError 的子類,當一個模塊無法被定位時將由 import 引發. 當在 sys.modules 中找到 None 時也會被引發.IndexError當序列抽取超出范圍時將被引發. (切片索引會被靜默截短到允許的范圍;如果指定索引不是整數則 TypeError 會被引發.)KeyError當在現有鍵集合中找不到指定的映射(字典)鍵時將被引發.KeyboardInterruptThe user presses the interrupt key (通常為 Control-C 或 Delete) 時將被引發. 在執行期間,Interrupt signals are detected periodically. 該異常繼承自 BaseException to ensure that it will not be processed Exception The code catches unexpectedly,This avoids exiting the interpreter.MemoryError當一個操作耗盡內存但情況仍可(通過刪除一些對象)進行挽救時將被引發. 關聯的值是一個字符串,Indicate which(內部)Operation ran out of memory. Note that due to the underlying memory management architecture(C 的 malloc() 函數),The interpreter may not always be able to fully recover from this situation;But it can throw an exception after all,This will print out the stack traceback information,in order to find out which runaway program is causing the problem.NameError當某個局部或全局名稱未找到時將被引發. This exception is only used for unqualified names. The associated value is an error message,which contains names not found.NotImplementedError此異常派生自 RuntimeError. 在用戶自定義的基類中,抽象方法應當在其要求所派生類重載該方法,或是在其要求所開發的類提示具體實現尚待添加時引發此異常.OSError此異常在一個系統函數返回系統相關的錯誤時將被引發,此類錯誤包括 I/O 操作失敗例如 "文件未找到" 或 "磁盤已滿" 等(不包括非法參數類型或其他偶然性錯誤).OverflowError當算術運算的結果大到無法表示時將被引發. 這對整數來說不可能發生(寧可引發 MemoryError 也不會放棄嘗試). 但是出於歷史原因,有時也會在整數超出要求范圍的情況下引發 OverflowError. 因為在 C 中缺少對浮點異常處理的標准化,大多數浮點運算都不會做檢查.RecursionError此異常派生自 RuntimeError. It will detect when the interpreter detects that the maximum recursion depth is exceeded (參見 sys.getrecursionlimit()) 時被引發.ReferenceError此異常將在使用 weakref.proxy() 函數所創建的弱引用來訪問該引用的某個已被作為垃圾回收的屬性時被引發.RuntimeError當檢測到一個不歸屬於任何其他類別的錯誤時將被引發. 關聯的值是一個指明究竟發生了什麼問題的字符串.StopIteration由內置函數 next() 和 iterator 的 __next__() 方法所引發,用來表示該迭代器不能產生下一項.StopAsyncIteration必須由一個 asynchronous iterator 對象的 __anext__() 方法來引發以停止迭代操作.SyntaxError當解析器遇到語法錯誤時引發. 這可以發生在 import 語句,對內置函數 compile(), exec() 或 eval() 的調用,或是讀取原始腳本或標准輸入(也包括交互模式)的時候.IndentationError與不正確的縮進相關的語法錯誤的基類. 這是 SyntaxError 的一個子類.TabError當縮進包含對制表符和空格符不一致的使用時將被引發. 這是 IndentationError 的一個子類.SystemError當解釋器發現內部錯誤,但情況看起來尚未嚴重到要放棄所有希望時將被引發. The associated value is a string indicating what went wrong(Represented as a low-level symbol).SystemExit此異常由 sys.exit() 函數引發. 它繼承自 BaseException 而不是 Exception to ensure that it will not be processed Exception The code catches unexpectedly. This allows this exception to properly propagate up and cause the interpreter to exit. if it is not processed,則 Python The interpreter will exit;No stack traceback information will be printed. The optional arguments accepted by the constructor are the same as passed to sys.exit() 的相同. If the value is an integer,then it indicates the system exit status code(會傳遞給 C 的 exit() 函數);如果該值為 None,The exit status code is zero;If the value is of another type(例如字符串),The value of the object is printed and the exit status code is set to one.TypeError當一個操作或函數被應用於類型不適當的對象時將被引發. 關聯的值是一個字符串,Gives details about type mismatches.UnboundLocalError當在函數或方法中對某個局部變量進行引用,但該變量並未綁定任何值時將被引發. 此異常是 NameError 的一個子類.UnicodeError當發生與 Unicode 相關的編碼或解碼錯誤時將被引發. 此異常是 ValueError 的一個子類.UnicodeEncodeError當在編碼過程中發生與 Unicode 相關的錯誤時將被引發. 此異常是 UnicodeError 的一個子類.UnicodeDecodeError當在解碼過程中發生與 Unicode 相關的錯誤時將被引發. 此異常是 UnicodeError 的一個子類.UnicodeTranslateError在轉寫過程中發生與 Unicode 相關的錯誤時將被引發. 此異常是 UnicodeError 的一個子類.ValueError當操作或函數接收到具有正確類型但值不適合的參數,並且情況不能用更精確的異常例如 IndexError 來描述時將被引發.ZeroDivisionError當除法或取余運算的第二個參數為零時將被引發. 關聯的值是一個字符串,指明操作數和運算的類型.OS 異常描述:下列異常均為 OSError 的子類,它們將根據系統錯誤代碼被引發.BlockingIOErrorWhen the operation has blocking set to the object of a non-blocking operation(例如套接字)時引發.對應於 errno EAGAIN、EALREADY、EWOULDBLOCK 和 EINPROGRESS.ChildProcessErrorRaised when an operation on a child process fails.對應於 errno ECHILD.ConnectionError與連接相關問題的基類.BrokenPipeErrorConnectionError 的子類,Attempt to write on the pipe while the other end is already closed,Or raised when trying to write on a socket that has been closed for writing.對應於 errno EPIPE 和 ESHUTDOWN.ConnectionAbortedErrorConnectionError 的子類,Raised when a peer aborts a connection attempt.對應於 errno ECONABORTED.ConnectionRefusedErrorConnectionError 的子類,Raised when a connection attempt is rejected by the peer.對應於 errno ECONNREFUSED.ConnectionResetErrorConnectionError 的子類,Raised when the peer resets the connection.對應於 errno ECONNRESET.FileExistsErrorRaised when trying to create a file or directory that already exists.對應於 errno EEXIST.FileNotFoundErrorRaised when a file or directory is requested but does not exist.對應於 errno ENOENT.InterruptedError當系統調用被輸入信號中斷時將被引發. 對應於 errno EINTRIsADirectoryError在目錄上請求文件操作(例如 os.remove())時引發.對應於 errno EISDIR.NotADirectoryErrorWhen a directory operation is requested on something that is not a directory(例如 os.listdir())時引發.在大多數 POSIX 平台上,If the operation attempts to open or traverse a non-directory file,as if it were a directory,May also trigger it.對應於 errno ENOTDIR.PermissionErrorRaised when attempting to run an operation that does not have sufficient access rights - 例如文件系統權限.對應於 errno EACCES 和 EPERM.ProcessLookupErrorRaised when the given process does not exist.對應於 errno ESRCH.TimeoutErrorRaised when a system function times out at the system level.對應於 errno ETIMEDOUT.警告描述:The following exceptions are used as warning categoriesWarning警告類別的基類.UserWarning用戶代碼所產生警告的基類.DeprecationWarning如果所發出的警告是針對其他 Python 開發者的,則以此作為與已棄用特性相關警告的基類.PendingDeprecationWarning對於已過時並預計在未來棄用,但目前尚未棄用的特性相關警告的基類.SyntaxWarning與模糊的語法相關的警告的基類.RuntimeWarning與模糊的運行時行為相關的警告的基類.FutureWarning如果所發出的警告是針對以 Python 所編寫應用的最終用戶的,則以此作為與已棄用特性相關警告的基類.ImportWarning與在模塊導入中可能的錯誤相關的警告的基類.UnicodeWarning與 Unicode 相關的警告的基類.EncodingWarning與編碼格式相關的警告的基類.BytesWarning與 bytes 和 bytearray 相關的警告的基類.ResourceWarning資源使用相關警告的基類.Will be ignored by the default warning filter. 啟用 Python 開發模式 This warning is displayed.

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


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