異常應該是類對象。異常在模塊中定義exceptions。這(zhè)個模塊永遠不需要(yào)顯式導入:在內(nèi)置的命名空間(jiān)和(hé)exceptions模塊中都(dōu)提供了(le)異常。
對于類異常,在try帶有except提及特定類的子句的語句中,該子句還處理從(cóng)該類派生的任何異常類(但(dàn)不包括派生它的異常類)。兩個不通(tōng)過子類關聯的異常類永遠不會相同,即使它們具有相同的名稱。
下(xià)面列出的內(nèi)置例外(wài)可(kě)以由解釋器或內(nèi)置函數(shù)生成。除了(le)提到的地(dì)方,它們有一(yī)個“關聯值”,表示錯誤的詳細原因。這(zhè)可(kě)能(néng)是一(yī)個包含多項信息的字符串或元組(例如(rú),錯誤代碼和(hé)解釋代碼的字符串)。關聯的值是raise語句的第二個參數(shù)。如(rú)果異常類是從(cóng)标準根類派生的BaseException,則關聯值将作(zuò)為(wèi)異常實例的args屬性出現。
用戶代碼可(kě)以引發內(nèi)置的異常。這(zhè)可(kě)用于測試異常處理程序或報告錯誤情況,“就像”解釋程序引發相同異常的情況一(yī)樣; 但(dàn)要(yào)注意,沒有什麽可(kě)以防止用戶代碼引發不适當的錯誤。
內(nèi)置的異常類可(kě)以被分類以定義新的異常; 鼓勵程序員(yuán)從(cóng)Exception類或它的一(yī)個子類派生新的異常,而不是從(cóng)中派生BaseException。有關定義異常的更多信息,請(qǐng)參見(jiàn)Python教程中用戶定義的例外(wài)。
以下(xià)例外(wài)僅用作(zuò)其他(tā)例外(wài)的基類。
exception BaseException
所有內(nèi)置異常的基類。它并不意味着被用戶定義的類直接繼承(為(wèi)此,使用Exception)。如(rú)果對此類的實例調用str()or unicode(),則返回實例參數(shù)的表示形式,如(rú)果沒有參數(shù),則返回空字符串。
2.5版本中的新功能(néng)。
args
賦給異常構造函數(shù)的參數(shù)元組。一(yī)些內(nèi)置的異常(例如(rú)IOError)會期望一(yī)定數(shù)量的參數(shù)并為(wèi)這(zhè)個元組賦予特殊的含義,而另一(yī)些內(nèi)置異常通(tōng)常隻用一(yī)個字符串來調用,從(cóng)而給出錯誤消息。
exception Exception
所有內(nèi)置的,非系統退出的異常都(dōu)源自(zì)這(zhè)個類。所有用戶定義的異常也應該從(cóng)這(zhè)個類派生。
在版本2.5中更改:更改為(wèi)從(cóng)中繼承BaseException。
exception StandardError
該基類除了(le)所有內(nèi)置例外(wài)StopIteration,GeneratorExit,KeyboardInterrupt和(hé)SystemExit。StandardError本身來源于Exception。
exception ArithmeticError
對于那(nà)些內(nèi)置異常的基類時(shí)引發的各種算術(shù)錯誤:OverflowError,ZeroDivisionError,FloatingPointError。
exception BufferError
當無法執行(xíng)緩沖區(qū)相關操作(zuò)時(shí)引發。
exception LookupError
在映射或序列上(shàng)使用的鍵或索引無效時(shí)引發異常的基類:IndexError,KeyError。這(zhè)可(kě)以直接通(tōng)過codecs.lookup()。
exception EnvironmentError
可(kě)以在Python系統之外(wài)發生的異常的基類:IOError,OSError。當使用2元組創建此類型的異常時(shí),第一(yī)個項目可(kě)用于實例的errno屬性(假定為(wèi)錯誤号),第二個項目在strerror屬性上(shàng)可(kě)用(通(tōng)常是關聯的錯誤消息)。該元組本身也可(kě)用于該args屬性。
1.5.2版本的新功能(néng)。
當EnvironmentError用三元組實例化一(yī)個異常時(shí),前兩個項目如(rú)上(shàng)所述可(kě)用,而第三個項目可(kě)用于該filename屬性。但(dàn)是,為(wèi)了(le)向後兼容,該args屬性隻包含前兩個構造函數(shù)參數(shù)的2元組。
這(zhè)個filename屬性是None當這(zhè)個異常是用3個以外(wài)的參數(shù)創建的。的errno和(hé)strerror屬性也None當實例與其他(tā)大于2個或3個參數(shù)創建。在這(zhè)最後一(yī)種情況下(xià),args将逐字構造函數(shù)參數(shù)作(zuò)為(wèi)元組包含在內(nèi)。
以下(xià)例外(wài)是實際引發的例外(wài)情況。
exception AssertionError
當一(yī)個assert陳述失敗時(shí)引發。
exception AttributeError
當屬性引用(請(qǐng)參閱屬性引用)或分配失敗時(shí)引發。(當一(yī)個對象根本不支持屬性引用或屬性賦值時(shí),TypeError會引發。)
exception EOFError
當其中一(yī)個內(nèi)置函數(shù)(input()或raw_input())在沒有讀取任何數(shù)據的情況下(xià)碰到文件結束條件(EOF)時(shí)引發。(注意:當方法碰到EOF時(shí)file.read(),file.readline()方法會返回一(yī)個空字符串。)
exception FloatingPointError
當浮點操作(zuò)失敗時(shí)引發。這(zhè)個異常總是被定義的,但(dàn)是隻能(néng)在Python配置了(le)--with-fpectl選項或者文件中WANT_SIGFPE_HANDLER定義了(le)符号時(shí)才會引發pyconfig.h。
exception GeneratorExit
當調用生成器的close()方法時(shí)引發。它直接繼承BaseException而不是StandardError因為(wèi)它在技術(shù)上(shàng)不是一(yī)個錯誤。
2.5版本中的新功能(néng)。
版本2.6中更改:更改為(wèi)繼承BaseException。
exception IOError
當I / O操作(zuò)(例如(rú)print語句,內(nèi)置open()函數(shù)或文件對象的方法)因I / O相關原因(例如(rú),“找不到文件”或“磁盤已滿”)而失敗時(shí)引發。
這(zhè)個類來源于EnvironmentError。有關異常實例屬性的更多信息,請(qǐng)參閱上(shàng)面的讨論。
在版本2.6中更改:更改socket.error為(wèi)将其用作(zuò)基類。
exception ImportError
當import語句未能(néng)找到模塊定義或from ... import未能(néng)找到要(yào)導入的名稱時(shí)引發。
exception IndexError
當序列下(xià)标超出範圍時(shí)引發。(切片索引被靜默截斷以落入允許的範圍;如(rú)果索引不是普通(tōng)整數(shù),TypeError則會引發。)
exception KeyError
在現有密鑰集中未找到映射(字典)鍵時(shí)引發。
exception KeyboardInterrupt
當用戶點擊中斷鍵時(shí)(通(tōng)常Control-C或Delete),引發。在執行(xíng)期間(jiān),會定期檢查中斷。當內(nèi)置函數(shù)input()或raw_input()等待輸入時(shí)鍵入中斷也會引發此異常。該異常繼承,以防BaseException意外(wài)捕獲代碼,Exception從(cóng)而阻止解釋器退出。
在版本2.5中更改:更改為(wèi)從(cóng)中繼承BaseException。
exception MemoryError
當一(yī)個操作(zuò)用完內(nèi)存時(shí)引發,但(dàn)情況仍然可(kě)能(néng)被救出(通(tōng)過删除一(yī)些對象)。關聯的值是一(yī)個字符串,指示什麽樣的(內(nèi)部)操作(zuò)耗盡內(nèi)存。請(qǐng)注意,由于底層內(nèi)存管理架構(C的malloc()功能(néng)),解釋器可(kě)能(néng)無法總是從(cóng)這(zhè)種情況中恢複; 它仍然會引發一(yī)個異常,以便可(kě)以打印堆棧回溯,以防止失控程序的發生。
exception NameError
當沒有找到本地(dì)或全球名稱時(shí)引發。這(zhè)僅适用于非限定名稱。關聯的值是包含無法找到的名稱的錯誤消息。
exception NotImplementedError
這(zhè)個異常來源于RuntimeError。在用戶定義的基類中,抽象方法在它們需要(yào)派生類重寫方法時(shí)應引發此異常。
1.5.2版本的新功能(néng)。
exception OSError
這(zhè)個異常來源于EnvironmentError。當一(yī)個函數(shù)返回一(yī)個與系統相關的錯誤(不适用于非法參數(shù)類型或其他(tā)偶然錯誤)時(shí)會引發它。該errno屬性是from的數(shù)字錯誤代碼errno,strerror屬性是相應的字符串,将由C函數(shù)打印perror()。請(qǐng)參閱模塊errno,其中包含由基礎操作(zuò)系統定義的錯誤代碼的名稱。
對于涉及文件系統路徑(例如(rú)chdir()或unlink())的異常,異常實例将包含第三個屬性filename,它是傳遞給函數(shù)的文件名。
1.5.2版本的新功能(néng)。
exception OverflowError
當算術(shù)運算的結果太大而無法表示時(shí)引發。對于長(cháng)整數(shù)(這(zhè)會發生而MemoryError不是放棄)和(hé)大多數(shù)使用純整數(shù)的操作(zuò)(這(zhè)會返回一(yī)個長(cháng)整數(shù))不會發生。由于C中缺少(shǎo)浮點異常處理的标準化,大多數(shù)浮點操作(zuò)也不會被檢查。
exception ReferenceError
當weakref.proxy()函數(shù)創建的弱引用代理被用于訪問(wèn)垃圾收集後指示對象的屬性時(shí),會引發此異常。有關弱引用的更多信息,請(qǐng)參閱weakref模塊。
版本2.2中的新功能(néng):以前稱為(wèi)weakref.ReferenceError例外(wài)。
exception RuntimeError
當檢測到不屬于任何其他(tā)類别的錯誤時(shí)引發。關聯的值是一(yī)個字符串,指示出錯的地(dì)方。
exception StopIteration
通(tōng)過叠代器的next()方法來提示沒有其他(tā)值。這(zhè)是源自(zì)Exception而不是StandardError,因為(wèi)這(zhè)不被認為(wèi)是在正常的應用程序中的錯誤。
2.2版本中的新功能(néng)。
exception SyntaxError
解析器遇到語法錯誤時(shí)引發。這(zhè)可(kě)能(néng)發生在一(yī)個import聲明(míng),在exec聲明(míng)中,中內(nèi)置函數(shù)的調用eval()或input()讀取初始腳本或标準輸入(也交互),或當。
這(zhè)個類的實例有屬性filename,lineno,offset并且text為(wèi)的細節更容易獲得。str()的異常實例隻返回消息。
exception IndentationError
與不正确縮進相關的語法錯誤的基類。這(zhè)是一(yī)個子類SyntaxError。
exception TabError
當縮進含有不一(yī)緻的制表符和(hé)空格時(shí)引發。這(zhè)是一(yī)個子類IndentationError。
exception SystemError
當翻譯發現內(nèi)部錯誤時(shí)引發,但(dàn)情況看(kàn)起來并不嚴重,導緻它放棄所有希望。關聯的值是一(yī)個字符串,表示出現了(le)什麽問(wèn)題(以低(dī)級方式)。
您應該将此報告給您的Python解釋器的作(zuò)者或維護者。一(yī)定要(yào)報告Python解釋器的版本(sys.version它也會在交互式Python會話開(kāi)始時(shí)打印),确切的錯誤消息(異常的關聯值)以及觸發錯誤的程序源(如(rú)果可(kě)能(néng))。
exception SystemExit
這(zhè)個例外(wài)是由sys.exit()函數(shù)引發的。當它不被處理時(shí),Python解釋器退出; 沒有堆棧回溯被打印。如(rú)果關聯值是一(yī)個純整數(shù),則它指定系統退出狀态(傳遞給C的exit()函數(shù)); 如(rú)果是None,退出狀态為(wèi)零; 如(rú)果它有其他(tā)類型(如(rú)字符串),則打印該對象的值并且退出狀态為(wèi)一(yī)。
實例具有code設置為(wèi)建議(yì)的退出狀态或錯誤消息的屬性(默認為(wèi)None)。此外(wài),此異常直接來自(zì)BaseException而不是StandardError,因為(wèi)它在技術(shù)上(shàng)不是一(yī)個錯誤。
調用将sys.exit()被轉換為(wèi)異常,以便可(kě)以執行(xíng)清理處理程序(finally語句子句try),以便調試程序可(kě)以執行(xíng)腳本而不會失去控制權。os._exit()如(rú)果确實需要(yào)立即退出(例如(rú),在調用後的子進程中os.fork()),則可(kě)以使用該函數(shù)。
唯一(yī)的例外(wài)來自(zì)繼承BaseException,而不是StandardError或Exception使得它不會意外(wài)地(dì)被映入代碼捕獲Exception。這(zhè)允許異常正确傳播并導緻解釋器退出。
在版本2.5中更改:更改為(wèi)從(cóng)中繼承BaseException。
exception TypeError
當操作(zuò)或功能(néng)應用于不适當類型的對象時(shí)引發。關聯的值是一(yī)個字符串,提供有關類型不匹配的詳細信息。
exception UnboundLocalError
在函數(shù)或方法中引用局部變量時(shí)引發,但(dàn)沒有值綁定到該變量。這(zhè)是一(yī)個子類NameError。
2.0版本中的新功能(néng)。
exception UnicodeError
當發生與Unicode相關的編碼或解碼錯誤時(shí)引發。它是一(yī)個子類ValueError。
UnicodeError具有描述編碼或解碼錯誤的屬性。例如(rú),err.object[err.start:err.end]給出編解碼器失敗的特定無效輸入。
encoding
引發錯誤的編碼的名稱。
reason
描述特定編解碼器錯誤的字符串。
object
編解碼器試圖編碼或解碼的對象。
start
中的無效數(shù)據的第一(yī)個索引object。
end
最後一(yī)個無效數(shù)據之後的索引object。
2.0版本中的新功能(néng)。
exception UnicodeEncodeError
在編碼期間(jiān)發生與Unicode相關的錯誤時(shí)引發。它是一(yī)個子類UnicodeError。
2.3版本的新功能(néng)。
exception UnicodeDecodeError
在解碼期間(jiān)發生與Unicode相關的錯誤時(shí)引發。它是一(yī)個子類UnicodeError。
2.3版本的新功能(néng)。
exception UnicodeTranslateError
在翻譯過程中發生與Unicode相關的錯誤時(shí)引發。它是一(yī)個子類UnicodeError。
2.3版本的新功能(néng)。
exception ValueError
當內(nèi)建的操作(zuò)或函數(shù)接收到具有正确類型但(dàn)值不恰當的參數(shù)時(shí)引發,并且這(zhè)種情況不會被更精确的異常(例如(rú),)所描述IndexError。
exception VMSError
隻在VMS上(shàng)可(kě)用。當發生VMS特定錯誤時(shí)引發。
exception WindowsError
當發生特定于Windows的錯誤或錯誤編号與errno值不對應時(shí)引發。該winerror和(hé)strerror值是從(cóng)的返回值創建GetLastError()并FormatMessage()從(cóng)Windows平台的API函數(shù)。該errno值将該值映射winerror到相應的errno.h值。這(zhè)是一(yī)個子類OSError。
2.0版本中的新功能(néng)。
在版本2.5中更改:以前的版本将GetLastError()代碼放入errno。
exception ZeroDivisionError
當分部或模運算的第二個參數(shù)為(wèi)零時(shí)引發。關聯的值是一(yī)個指示操作(zuò)數(shù)和(hé)操作(zuò)類型的字符串。
以下(xià)例外(wài)用作(zuò)警告類别; 請(qǐng)參閱warnings模塊了(le)解更多信息。
exception Warning
警告類别的基類。
exception UserWarning
用戶代碼生成的警告的基類。
exception DeprecationWarning
有關不推薦使用的功能(néng)的警告的基類。
exception PendingDeprecationWarning
基類,用于警告将來不推薦使用的功能(néng)。
exception SyntaxWarning
有關可(kě)疑語法的警告的基類。
exception RuntimeWarning
用于警告有關可(kě)疑運行(xíng)時(shí)行(xíng)為(wèi)的基類。
exception FutureWarning
基類用于警告将來将在語義上(shàng)改變的構造。
exception ImportWarning
基類,用于警告模塊導入中可(kě)能(néng)出現的錯誤。
2.5版本中的新功能(néng)。
exception UnicodeWarning
與Unicode相關的警告的基類。
New in version 2.5.
網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發