日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:內(nèi)置異常

內(nèi)置異常

在 python 中,所有異常必須為一個派生自 BaseException 的類的實例。 在帶有提及一個特定類的 except 子句的 try 語句中,該子句也會處理任何派生自該類的異常類(但不處理 所派生出的異常類)。 通過子類化創(chuàng)建的兩個不相關(guān)異常類永遠是不等效的,既使它們具有相同的名稱。

創(chuàng)新互聯(lián)建站服務(wù)項目包括固始網(wǎng)站建設(shè)、固始網(wǎng)站制作、固始網(wǎng)頁制作以及固始網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,固始網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到固始省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

下面列出的內(nèi)置異??赏ㄟ^解釋器或內(nèi)置函數(shù)來生成。除非另有說明,它們都會具有一個提示導(dǎo)致錯誤詳細原因的“關(guān)聯(lián)值”。 這可以是一個字符串或由多個信息項(例如一個錯誤碼和一個解釋錯誤的字符串)組成的元組。 關(guān)聯(lián)值通常會作為參數(shù)被傳遞給異常類的構(gòu)造器。

用戶代碼可以引發(fā)內(nèi)置異常。 這可被用于測試異常處理程序或報告錯誤條件,“就像” 在解釋器引發(fā)了相同異常的情況時一樣;但是請注意,沒有任何機制能防止用戶代碼引發(fā)不適當?shù)腻e誤。

內(nèi)置異常類可以被子類化以定義新的異常;鼓勵程序員從 Exception 類或它的某個子類而不是從 BaseException 來派生新的異常。 關(guān)于定義異常的更多信息可以在 Python 教程的 用戶自定義異常 部分查看。

異常上下文

當有其他異常已經(jīng)被處理的情況下又引發(fā)一個新異常的時候,新異常的 __context__ 屬性會被自動設(shè)為已經(jīng)被處理的異常。 異常可以在使用了 except 或 finally 子句,或者 with 語句的時候被處理。

這個隱式異常上下文可以通過使用 from 配合 raise 來補充一個顯式的原因:

 
 
 
 
  1. raise new_exc from original_exc

跟在 from 之后一表達式必須為一個異?;?None。 它將在所引發(fā)的異常上被設(shè)置為 __cause__。 設(shè)置 __cause__ 還會隱式地將 __suppress_context__ 屬性設(shè)為 True,這樣使用 raise new_exc from None 可以有效地將舊異常替換為新異常來顯示其目的 (例如將 KeyError 轉(zhuǎn)換為 AttributeError),同時讓舊異常在 __context__ 中保持可用狀態(tài)以便在調(diào)試時進行內(nèi)省。

除了異常本身的回溯以外,默認的回溯還會顯示這些串連的異常。 __cause__ 中的顯式串連異常如果存在將總是顯示。 __context__ 中的隱式串連異常僅在 __cause__ 為 None 并且 __suppress_context__ 為假值時顯示。

不論在哪種情況下,異常本身總會在任何串連異常之后顯示,以便回溯的最后一行總是顯示所引發(fā)的最后一個異常。

從內(nèi)置異常繼承

用戶代碼可以創(chuàng)建繼承自某個異常類型的子類。 建議每次僅子類化一個異常類型以避免多個基類處理 args 屬性的不同方式,以及內(nèi)存布局不兼容可能導(dǎo)致的沖突。

CPython 實現(xiàn)細節(jié): 大多數(shù)內(nèi)置異常都用 C 實現(xiàn)以保證運行效率,參見: Objects/exceptions.c。 其中一些具有自定義內(nèi)存布局,這使得創(chuàng)建繼承自多個異常類型的子類成為不可能。 一個類型的內(nèi)存布局屬于實現(xiàn)細節(jié)并可能隨著 Python 版本升級而改變,導(dǎo)致在未來可能產(chǎn)生新的沖突。 因此,建議完全避免子類化多個異常類型。

基類

下列異常主要被用作其他異常的基類。

exception BaseException

所有內(nèi)置異常的基類。 它不應(yīng)該被用戶自定義類直接繼承 (這種情況請使用 Exception)。 如果在此類的實例上調(diào)用 str(),則會返回實例的參數(shù)表示,或者當沒有參數(shù)時返回空字符串。

  • args

    傳給異常構(gòu)造器的參數(shù)元組。 某些內(nèi)置異常 (例如 OSError) 接受特定數(shù)量的參數(shù)并賦予此元組中的元素特殊的含義,而其他異常通常只接受一個給出錯誤信息的單獨字符串。

  • with_traceback(tb)

    此方法會將 tb 設(shè)為新的異?;厮菪畔⒉⒎祷禺惓ο?。 它在 PEP 3134 的異常鏈特性可用之前更為常用。 下面的例子演示了我們?nèi)绾螌⒁粋€ SomeException 實例轉(zhuǎn)換為 OtherException 實例而保留回溯信息。 異常一旦被引發(fā),當前幀會被推至 OtherException 的回溯棧頂端,就像當我們允許原始 SomeException 被傳播給調(diào)用方時它的回溯棧將會發(fā)生的情形一樣。:

       
       
       
       
    1. try:
    2. ...
    3. except SomeException:
    4. tb = sys.exc_info()[2]
    5. raise OtherException(...).with_traceback(tb)
  • add_note(note)

    Add the string note to the exception’s notes which appear in the standard traceback after the exception string. A TypeError is raised if note is not a string.

    3.11 新版功能.

  • __notes__

    A list of the notes of this exception, which were added with add_note(). This attribute is created when add_note() is called.

    3.11 新版功能.

exception Exception

所有內(nèi)置的非系統(tǒng)退出類異常都派生自此類。 所有用戶自定義異常也應(yīng)當派生自此類。

exception ArithmeticError

此基類用于派生針對各種算術(shù)類錯誤而引發(fā)的內(nèi)置異常: OverflowError, ZeroDivisionError, FloatingPointError。

exception BufferError

當與 緩沖區(qū) 相關(guān)的操作無法執(zhí)行時將被引發(fā)。

exception LookupError

此基類用于派生當映射或序列所使用的鍵或索引無效時引發(fā)的異常: IndexError, KeyError。 這可以通過 codecs.lookup() 來直接引發(fā)。

具體異常

以下異常屬于經(jīng)常被引發(fā)的異常。

exception AssertionError

當 assert 語句失敗時將被引發(fā)。

exception AttributeError

當屬性引用 (參見 屬性引用) 或賦值失敗時將被引發(fā)。 (當一個對象根本不支持屬性引用或?qū)傩再x值時則將引發(fā) TypeError。)

nameobj 屬性可以使用構(gòu)造器的僅限關(guān)鍵字參數(shù)來設(shè)置。 它們?nèi)绻辉O(shè)置則分別代表要嘗試訪問的屬性名稱以及所訪問的該屬性的對象。

在 3.10 版更改: 增加了 nameobj 屬性。

exception EOFError

當 input() 函數(shù)未讀取任何數(shù)據(jù)即達到文件結(jié)束條件 (EOF) 時將被引發(fā)。 (另外,io.IOBase.read() 和 io.IOBase.readline() 方法在遇到 EOF 則將返回一個空字符串。)

exception FloatingPointError

目前未被使用。

exception GeneratorExit

當一個 generator 或 coroutine 被關(guān)閉時將被引發(fā);參見 generator.close() 和 coroutine.close()。 它直接繼承自 BaseException 而不是 Exception,因為從技術(shù)上來說它并不是一個錯誤。

exception ImportError

當 import 語句嘗試加載模塊遇到麻煩時將被引發(fā)。 并且當 from ... import 中的 “from list” 存在無法找到的名稱時也會被引發(fā)。

namepath 屬性可通過對構(gòu)造器使用僅關(guān)鍵字參數(shù)來設(shè)定。 設(shè)定后它們將分別表示被嘗試導(dǎo)入的模塊名稱與觸發(fā)異常的任意文件所在路徑。

在 3.3 版更改: 添加了 namepath 屬性。

exception ModuleNotFoundError

ImportError 的子類,當一個模塊無法被定位時將由 import 引發(fā)。 當在 sys.modules 中找到 None 時也會被引發(fā)。

3.6 新版功能.

exception IndexError

當序列抽取超出范圍時將被引發(fā)。 (切片索引會被靜默截短到允許的范圍;如果指定索引不是整數(shù)則 TypeError 會被引發(fā)。)

exception KeyError

當在現(xiàn)有鍵集合中找不到指定的映射(字典)鍵時將被引發(fā)。

exception KeyboardInterrupt

當用戶按下中斷鍵 (通常為 Control-C 或 Delete) 時將被引發(fā)。 在執(zhí)行期間,會定期檢測中斷信號。 該異常繼承自 BaseException 以確保不會被處理 Exception 的代碼意外捕獲,這樣可以避免退出解釋器。

備注

捕獲 KeyboardInterrupt 需要特別考慮。 因為它可能會在不可預(yù)知的點位被引發(fā),在某些情況下,它可能使運行中的程序陷入不一致的狀態(tài)。 通常最好是讓 KeyboardInterrupt 盡快結(jié)束程序或者完全避免引發(fā)它。 (參見 有關(guān)信號處理句柄和異常的注釋。)

exception MemoryError

當一個操作耗盡內(nèi)存但情況仍可(通過刪除一些對象)進行挽救時將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,指明是哪種(內(nèi)部)操作耗盡了內(nèi)存。 請注意由于底層的內(nèi)存管理架構(gòu)(C 的 malloc() 函數(shù)),解釋器也許并不總是能夠從這種情況下完全恢復(fù);但它畢竟可以引發(fā)一個異常,這樣就能打印出?;厮菪畔ⅲ员阏页鰧?dǎo)致問題的失控程序。

exception NameError

當某個局部或全局名稱未找到時將被引發(fā)。 此異常僅用于非限定名稱。 關(guān)聯(lián)的值是一條錯誤信息,其中包含未找到的名稱。

name 屬性可以使用構(gòu)造器的僅限關(guān)鍵字參數(shù)來設(shè)置。 它如果被設(shè)置則代表要嘗試訪問的變量名稱。

在 3.10 版更改: 增加了 name 屬性。

exception NotImplementedError

此異常派生自 RuntimeError。 在用戶自定義的基類中,抽象方法應(yīng)當在其要求所派生類重載該方法,或是在其要求所開發(fā)的類提示具體實現(xiàn)尚待添加時引發(fā)此異常。

備注

它不應(yīng)當用來表示一個運算符或方法根本不能被支持 — 在此情況下應(yīng)當讓特定運算符 / 方法保持未定義,或者在子類中將其設(shè)為 None。

備注

NotImplementedErrorNotImplemented 不可互換,即使它們有相似的名稱和用途。 請參閱 NotImplemented 了解有關(guān)何時使用它們的詳細說明。

exception OSError([arg])

exception OSError(errno, strerror[, filename[, winerror[, filename2]]])

此異常在一個系統(tǒng)函數(shù)返回系統(tǒng)相關(guān)的錯誤時將被引發(fā),此類錯誤包括 I/O 操作失敗例如 “文件未找到” 或 “磁盤已滿” 等(不包括非法參數(shù)類型或其他偶然性錯誤)。

構(gòu)造器的第二種形式可設(shè)置如下所述的相應(yīng)屬性。 如果未指定這些屬性則默認為 None。 為了能向下兼容,如果傳入了三個參數(shù),則 args 屬性將僅包含由前兩個構(gòu)造器參數(shù)組成的 2 元組。

構(gòu)造器實際返回的往往是 OSError 的某個子類,如下文 OS exceptions 中所描述的。 具體的子類取決于最終的 errno 值。 此行為僅在直接或通過別名來構(gòu)造 OSError 時發(fā)生,并且在子類化時不會被繼承。

  • errno

    來自于 C 變量 errno 的數(shù)字錯誤碼。

  • winerror

    在 Windows 下,此參數(shù)將給出原生的 Windows 錯誤碼。 而 errno 屬性將是該原生錯誤碼在 POSIX 平臺下的近似轉(zhuǎn)換形式。

    在 Windows 下,如果 winerror 構(gòu)造器參數(shù)是一個整數(shù),則 errno 屬性會根據(jù) Windows 錯誤碼來確定,而 errno 參數(shù)會被忽略。 在其他平臺上,winerror 參數(shù)會被忽略,并且 winerror 屬性將不存在。

  • strerror

    操作系統(tǒng)所提供的相應(yīng)錯誤信息。 它在 POSIX 平臺中由 C 函數(shù) perror() 來格式化,在 Windows 中則是由 FormatMessage()。

  • filename

    filename2

    對于與文件系統(tǒng)路徑有關(guān) (例如 open() 或 os.unlink()) 的異常,filename 是傳給函數(shù)的文件名。 對于涉及兩個文件系統(tǒng)路徑的函數(shù) (例如 os.rename()),filename2 將是傳給函數(shù)的第二個文件名。

在 3.3 版更改: EnvironmentError, IOError, WindowsError, socket.error, select.error 與 mmap.error 已被合并到 OSError,構(gòu)造器可能返回其中一個子類。

在 3.4 版更改: filename 屬性現(xiàn)在是傳給函數(shù)的原始文件名,而不是基于 filesystem encoding and error handler 進行編碼或解碼之后的名稱。 此外,還添加了 filename2 構(gòu)造器參數(shù)和屬性。

exception OverflowError

當算術(shù)運算的結(jié)果大到無法表示時將被引發(fā)。 這對整數(shù)來說不可能發(fā)生(寧可引發(fā) MemoryError 也不會放棄嘗試)。 但是出于歷史原因,有時也會在整數(shù)超出要求范圍的情況下引發(fā) OverflowError。 因為在 C 中缺少對浮點異常處理的標準化,大多數(shù)浮點運算都不會做檢查。

exception RecursionError

此異常派生自 RuntimeError。 它會在解釋器檢測發(fā)現(xiàn)超過最大遞歸深度 (參見 sys.getrecursionlimit()) 時被引發(fā)。

3.5 新版功能: 在此之前將只引發(fā) RuntimeError。

exception ReferenceError

此異常將在使用 weakref.proxy() 函數(shù)所創(chuàng)建的弱引用來訪問該引用的某個已被作為垃圾回收的屬性時被引發(fā)。 有關(guān)弱引用的更多信息請參閱 weakref 模塊。

exception RuntimeError

當檢測到一個不歸屬于任何其他類別的錯誤時將被引發(fā)。 關(guān)聯(lián)的值是一個指明究竟發(fā)生了什么問題的字符串。

exception StopIteration

由內(nèi)置函數(shù) next() 和 iterator 的 __next__() 方法所引發(fā),用來表示該迭代器不能產(chǎn)生下一項。

該異常對象只有一個屬性 value,它在構(gòu)造該異常時作為參數(shù)給出,默認值為 None。

當一個 generator 或 coroutine 函數(shù)返回時,將引發(fā)一個新的 StopIteration 實例,函數(shù)返回的值將被用作異常構(gòu)造器的 value 形參。

如果某個生成器代碼直接或間接地引發(fā)了 StopIteration,它會被轉(zhuǎn)換為 RuntimeError (并將 StopIteration 保留為導(dǎo)致新異常的原因)。

在 3.3 版更改: 添加了 value 屬性及其被生成器函數(shù)用作返回值的功能。

在 3.5 版更改: 引入了通過 from __future__ import generator_stop 來實現(xiàn) RuntimeError 轉(zhuǎn)換,參見 PEP 479。

在 3.7 版更改: 默認對所有代碼啟用 PEP 479: 在生成器中引發(fā)的 StopIteration 錯誤將被轉(zhuǎn)換為 RuntimeError。

exception StopAsyncIteration

必須由一個 asynchronous iterator 對象的 __anext__() 方法來引發(fā)以停止迭代操作。

3.5 新版功能.

exception SyntaxError(message, details)

當解析器遇到語法錯誤時引發(fā)。 這可以發(fā)生在 import 語句,對內(nèi)置函數(shù) compile(), exec() 或 eval() 的調(diào)用,或是讀取原始腳本或標準輸入(也包括交互模式)的時候。

異常實例的 str() 只返回錯誤消息。 錯誤詳情為一個元組,其成員也可在單獨的屬性中分別獲取。

  • filename

    發(fā)生語法錯誤所在文件的名稱。

  • lineno

    發(fā)生錯誤所在文件中的行號。 行號索引從 1 開始:文件中首行的 lineno 為 1。

  • offset

    發(fā)生錯誤所在文件中的列號。 列號索引從 1 開始:行中首個字符的 offset 為 1。

  • text

    錯誤所涉及的源代碼文本。

  • end_lineno

    發(fā)生的錯誤在文件中的末尾行號。 這個索引是從 1 開始的:文件中首行的 lineno 為 1。

  • end_offset

    發(fā)生的錯誤在文件中的末尾列號。 這個索引是從 1 開始:行中首個字符的 offset 為 1。

對于 f-字符串字段中的錯誤,消息會帶有 “f-string: “ 前綴并且其位置是基于替換表達式構(gòu)建的文本中的位置。 例如,編譯 f’Bad {a b} field’ 將產(chǎn)生這樣的 args 屬性: (‘f-string: …’, (‘’, 1, 2, ‘(a b)n’, 1, 5))。

在 3.10 版更改: 增加了 end_lineno 和 end_offset 屬性。

exception IndentationError

與不正確的縮進相關(guān)的語法錯誤的基類。 這是 SyntaxError 的一個子類。

exception TabError

當縮進包含對制表符和空格符不一致的使用時將被引發(fā)。 這是 IndentationError 的一個子類。

exception SystemError

當解釋器發(fā)現(xiàn)內(nèi)部錯誤,但情況看起來尚未嚴重到要放棄所有希望時將被引發(fā)。 關(guān)聯(lián)的值是一個指明發(fā)生了什么問題的字符串(表示為低層級的符號)。

你應(yīng)當將此問題報告給你所用 Python 解釋器的作者或維護人員。 請確認報告 Python 解釋器的版本號 (sys.version; 它也會在交互式 Python 會話開始時被打印出來),具體的錯誤消息(異常所關(guān)聯(lián)的值)以及可能觸發(fā)該錯誤的程序源碼。

exception SystemExit

此異常由 sys.exit() 函數(shù)引發(fā)。 它繼承自 BaseException 而不是 Exception 以確保不會被處理 Exception 的代碼意外捕獲。 這允許此異常正確地向上傳播并導(dǎo)致解釋器退出。 如果它未被處理,則 Python 解釋器就將退出;不會打印任何棧回溯信息。 構(gòu)造器接受的可選參數(shù)與傳遞給 sys.exit() 的相同。 如果該值為一個整數(shù),則它指明系統(tǒng)退出狀態(tài)碼(會傳遞給 C 的 exit() 函數(shù));如果該值為 None,則退出狀態(tài)碼為零;如果該值為其他類型(例如字符串),則會打印對象的值并將退出狀態(tài)碼設(shè)為一。

對 sys.exit() 的調(diào)用會被轉(zhuǎn)換為一個異常以便能執(zhí)行清理處理程序 (try 語句的 finally 子句),并且使得調(diào)試器可以執(zhí)行一段腳本而不必冒失去控制的風險。 如果絕對確實地需要立即退出(例如在調(diào)用 os.fork() 之后的子進程中)則可使用 os._exit().

  • code

    傳給構(gòu)造器的退出狀態(tài)碼或錯誤信息(默認為 None。)

exception TypeError

當一個操作或函數(shù)被應(yīng)用于類型不適當?shù)膶ο髸r將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,給出有關(guān)類型不匹配的詳情。

此異常可以由用戶代碼引發(fā),以表明嘗試對某個對象進行的操作不受支持也不應(yīng)當受支持。 如果某個對象應(yīng)當支持給定的操作但尚未提供相應(yīng)的實現(xiàn),所要引發(fā)的適當異常應(yīng)為 NotImplementedError。

傳入?yún)?shù)的類型錯誤 (例如在要求 int 時卻傳入了 list) 應(yīng)當導(dǎo)致 TypeError,但傳入?yún)?shù)的值錯誤 (例如傳入要求范圍之外的數(shù)值) 則應(yīng)當導(dǎo)致 ValueError。

exception UnboundLocalError

當在函數(shù)或方法中對某個局部變量進行引用,但該變量并未綁定任何值時將被引發(fā)。 此異常是 NameError 的一個子類。

exception UnicodeError

當發(fā)生與 Unicode 相關(guān)的編碼或解碼錯誤時將被引發(fā)。 此異常是 ValueError 的一個子類。

UnicodeError 具有一些描述編碼或解碼錯誤的屬性。 例如 err.object[err.start:err.end] 會給出導(dǎo)致編解碼器失敗的特定無效輸入。

  • encoding

    引發(fā)錯誤的編碼名稱。

  • reason

    描述特定編解碼器錯誤的字符串。

  • object

    編解碼器試圖要編碼或解碼的對象。

  • start

    object 中無效數(shù)據(jù)的開始位置索引。

  • end

    object 中無效數(shù)據(jù)的末尾位置索引(不含)。

exception UnicodeEncodeError

當在編碼過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。

exception UnicodeDecodeError

當在解碼過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。

exception UnicodeTranslateError

在轉(zhuǎn)寫過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。

exception ValueError

當操作或函數(shù)接收到具有正確類型但值不適合的參數(shù),并且情況不能用更精確的異常例如 IndexError 來描述時將被引發(fā)。

exception ZeroDivisionError

當除法或取余運算的第二個參數(shù)為零時將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,指明操作數(shù)和運算的類型。

下列異常被保留以與之前的版本相兼容;從 Python 3.3 開始,它們都是 OSError 的別名。

exception EnvironmentError

exception IOError

exception WindowsError

限在 Windows 中可用。

OS 異常

下列異常均為 OSError 的子類,它們將根據(jù)系統(tǒng)錯誤代碼被引發(fā)。

exception BlockingIOError

當一個操作將會在設(shè)置為非阻塞操作的對象(例如套接字)上發(fā)生阻塞時將被引發(fā)。 對應(yīng)于 errno EAGAIN, EALREADY, EWOULDBLOCK 和 EINPROGRESS。

除了 OSError 已有的屬性,BlockingIOError 還有一個額外屬性:

  • characters_written

    一個整數(shù),表示在被阻塞前已寫入到流的字符數(shù)。 當使用來自 io 模塊的帶緩沖 I/O 類時此屬性可用。

exception ChildProcessError

當一個子進程上的操作失敗時將被引發(fā)。 對應(yīng)于 errno ECHILD。

exception ConnectionError

與連接相關(guān)問題的基類。

其子類有 BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError 和 ConnectionResetError。

exception BrokenPipeError

ConnectionError 的子類,當試圖寫入一個管道而該管道的另一端已關(guān)閉,或者試圖寫入一個套接字而該套接字已關(guān)閉寫入時將被引發(fā)。 對應(yīng)于 errno EPIPE 和 ESHUTDOWN。

exception ConnectionAbortedError

ConnectionError 的子類,當一個連接嘗試被對端中止時將被引發(fā)。 對應(yīng)于 errno ECONNABORTED。

exception ConnectionRefusedError

ConnectionError 的子類,當一個連接嘗試被對端拒絕時將被引發(fā)。 對應(yīng)于 errno ECONNREFUSED。

exception ConnectionResetError

ConnectionError 的子類,當一個連接嘗試被對端重置時將被引發(fā)。 對應(yīng)于 errno ECONNRESET。

exception FileExistsError

當試圖創(chuàng)建一個已存在的文件或目錄時將被引發(fā)。 對應(yīng)于 errno EEXIST。

exception FileNotFoundError

將所請求的文件或目錄不存在時將被引發(fā)。 對應(yīng)于 errno ENOENT。

exception InterruptedError

當系統(tǒng)調(diào)用被輸入信號中斷時將被引發(fā)。 對應(yīng)于 errno EINTR。

在 3.5 版更改: 當系統(tǒng)調(diào)用被某個信號中斷時,Python 現(xiàn)在會重試系統(tǒng)調(diào)用,除非該信號的處理程序引發(fā)了其它異常 (原理參見 PEP 475) 而不是引發(fā) InterruptedError。

exception IsADirectoryError

當請求對一個目錄執(zhí)行文件操作 (例如 os.remove()) 時將被引發(fā)。 對應(yīng)于 errno EISDIR。

exception NotADirectoryError

當請求對一個非目錄執(zhí)行目錄操作 (例如 os.listdir()) 時將被引發(fā)。 在大多數(shù) POSIX 平臺上,它還可能在某個操作試圖將一個非目錄作為目錄打開或遍歷時被引發(fā)。 對應(yīng)于 errno ENOTDIR。

exception PermissionError

Raised when trying to run an operation without the adequate access rights - for example filesystem permissions. Corresponds to errno EACCES, EPERM, and ENOTCAPABLE.

在 3.11.1 版更改: WASI’s ENOTCAPABLE is now mapped to PermissionError.

exception ProcessLookupError

當給定的進程不存在時將被引發(fā)。 對應(yīng)于 errno ESRCH。

exception TimeoutError

當一個系統(tǒng)函數(shù)在系統(tǒng)層級發(fā)生超時的情況下將被引發(fā)。 對應(yīng)于 errno ETIMEDOUT。

3.3 新版功能: 添加了以上所有 OSError 的子類。

參見

PEP 3151 - 重寫 OS 和 IO 異常的層次結(jié)構(gòu)

警告

下列異常被用作警告類別;請參閱 警告類別 文檔了解詳情。

exception Warning

警告類別的基類。

exception UserWarning

用戶代碼所產(chǎn)生警告的基類。

exception DeprecationWarning

如果所發(fā)出的警告是針對其他 Python 開發(fā)者的,則以此作為與已棄用特性相關(guān)警告的基類。

會被默認警告過濾器忽略,在 __main__ 模塊中的情況除外 (PEP 565)。 啟用 Python 開發(fā)模式 時會顯示此警告。

這個棄用政策是在 PEP 387 中描述的。

exception PendingDeprecationWarning

對于已過時并預(yù)計在未來棄用,但目前尚未棄用的特性相關(guān)警告的基類。

這個類很少被使用,因為針對未來可能的棄用發(fā)出警告的做法并不常見,而針對當前已有的棄用則推薦使用 DeprecationWarning。

會被默認警告過濾器忽略。 啟用 Python 開發(fā)模式 時會顯示此警告。

這個棄用政策是在 PEP 387 中描述的。

exception SyntaxWarning

與模糊的語法相關(guān)的警告的基類。

exception RuntimeWarning

與模糊的運行時行為相關(guān)的警告的基類。

exception FutureWarning

如果所發(fā)出的警告是針對以 Python 所編寫應(yīng)用的最終用戶的,則以此作為與已棄用特性相關(guān)警告的基類。

exception ImportWarning

與在模塊導(dǎo)入中可能的錯誤相關(guān)的警告的基類。

會被默認警告過濾器忽略。 啟用 Python 開發(fā)模式 時會顯示此警告。

exception UnicodeWarning

與 Unicode 相關(guān)的警告的基類。

exception EncodingWarning

與編碼格式相關(guān)的警告的基類。

請參閱 選擇性的 EncodingWarning 來了解詳情。

3.10 新版功能.

exception BytesWarning

與 bytes 和 bytearray 相關(guān)的警告的基類。

exception ResourceWarning

資源使用相關(guān)警告的基類。

會被默認警告過濾器忽略。 啟用 Python 開發(fā)模式 時會顯示此警告。

3.2 新版功能.

Exception groups

The following are used when it is necessary to raise multiple unrelated exceptions. They are part of the exception hierarchy so they can be handled with except like all other exceptions. In addition, they are recognised by except*, which matches their subgroups based on the types of the contained exceptions.

exception ExceptionGroup(msg, excs)

exception BaseExceptionGroup(msg, excs)

Both of these exception types wrap the exceptions in the sequence excs. The msg parameter must be a string. The difference between the two classes is that BaseExceptionGroup extends BaseException and it can wrap any exception, while ExceptionGroup extends Exception and it can only wrap subclasses of Exception. This design is so that except Exception catches an ExceptionGroup but not BaseExceptionGroup.

The BaseExceptionGroup constructor returns an ExceptionGroup rather than a BaseExceptionGroup if all contained exceptions are Exception instances, so it can be used to make the selection automatic. The ExceptionGroup constructor, on the other hand, raises a TypeError if any contained exception is not an Exception subclass.

  • message

    The msg argument to the constructor. This is a read-only attribute.

  • exceptions

    A tuple of the exceptions in the excs sequence given to the constructor. This is a read-only attribute.

  • subgroup(condition)

    Returns an exception group that contains only the exceptions from the current group that match condition, or None if the result is empty.

    The condition can be either a function that accepts an exception and returns true for those that should be in the subgroup, or it can be an exception type or a tuple of exception types, which is used to check for a match using the same check that is used in an except clause.

    The nesting structure of the current exception is preserved in the result, as are the values of its message, __traceback__, __cause__, __context__ and __notes__ fields. Empty nested groups are omitted from the result.

    The condition is checked for all exceptions in the nested exception group, including the top-level and any nested exception groups. If the condition is true for such an exception group, it is included in the result in full.

  • split(condition)

    Like subgroup(), but returns the pair (match, rest) where match is subgroup(condition) and rest is the remaining non-matching part.

  • derive(excs)

    Returns an exception group with the same message, __traceback__, __cause__, __context__ and __notes__ but which wraps the exceptions in excs.

    This method is used by subgroup() and split(). A subclass needs to override it in order to make subgroup() and split() return instances of the subclass rather than ExceptionGroup.

       
       
       
       
    1. >>> class MyGroup(ExceptionGroup):
    2. ... def derive(self, exc):
    3. ... return MyGroup(self.message, exc)
    4. ...
    5. >>> MyGroup("eg", [ValueError(1), TypeError(2)]).split(TypeError)
    6. (MyGroup('eg', [TypeError(2)]), MyGroup('eg', [ValueError(1)]))

Note that BaseExceptionGroup defines __new__(), so subclasses that need a different constructor signature need to override that rather than __init__(). For example, the following defines an exception group subclass which accepts an exit_code and and constructs the group’s message from it.

 
 
 
 
  1. class Errors(ExceptionGroup):
  2. def __new__(cls, errors, exit_code):
  3. self = super().__new__(Errors, f"exit code: {exit_code}", errors)
  4. self.exit_code = exit_code
  5. return self
  6. def derive(self, excs):
  7. return Errors(excs, self.exit_code)

3.11 新版功能.

異常層次結(jié)構(gòu)

內(nèi)置異常的類層級結(jié)構(gòu)如下:

 
 
 
 
  1. BaseException
  2. ├── BaseExceptionGroup
  3. ├── GeneratorExit
  4. ├── KeyboardInterrupt
  5. ├── SystemExit
  6. └── Exception
  7. ├── ArithmeticError
  8. │ ├── FloatingPointError
  9. │ ├── OverflowError
  10. │ └── ZeroDivisionError
  11. ├── AssertionError
  12. ├── AttributeError
  13. ├── BufferError
  14. ├── EOFError
  15. ├── ExceptionGroup [BaseExceptionGroup]
  16. ├── ImportError
  17. │ └── ModuleNotFoundError
  18. ├── LookupError
  19. │ ├── IndexError
  20. │ └── KeyError
  21. ├── MemoryError
  22. ├── NameError
  23. │ └── UnboundLocalError
  24. ├── OSError
  25. │ ├── BlockingIOError
  26. │ ├── ChildProcessError
  27. │ ├── ConnectionError
  28. │ │ ├── BrokenPipeError
  29. │ │ ├── ConnectionAbortedError
  30. │ │ ├── ConnectionRefusedError
  31. │ │ └── ConnectionResetError
  32. │ ├── FileExistsError
  33. │ ├── FileNotFoundError
  34. │ ├── InterruptedError
  35. │ ├── IsADirectoryError
  36. │ ├── NotADirectoryError
  37. │ ├── PermissionError
  38. │ ├── ProcessLookupError
  39. │ └── TimeoutError
  40. ├── ReferenceError
  41. ├── RuntimeError
  42. │ ├── NotImplementedError
  43. │ └── RecursionError
  44. ├── StopAsyncIteration
  45. ├── StopIteration
  46. ├── SyntaxError
  47. │ └── IndentationError
  48. │ └── TabError
  49. ├── SystemError
  50. ├── TypeError
  51. ├── ValueError
  52. │ └── UnicodeError
  53. │ ├── UnicodeDecodeError
  54. │ ├── UnicodeEncodeError
  55. │ └── UnicodeTranslateError
  56. └── Warning
  57. ├── BytesWarning
  58. ├── DeprecationWarning
  59. ├── EncodingWarning
  60. ├── FutureWarning
  61. ├── ImportWarning
  62. ├── PendingDeprecationWarning
  63. ├── ResourceWarning
  64. ├── RuntimeWarning
  65. ├── SyntaxWarning
  66. ├── UnicodeWarning
  67. └── UserWarning

當前名稱:創(chuàng)新互聯(lián)Python教程:內(nèi)置異常
文章路徑:http://www.5511xx.com/article/cohdsep.html