python異常處理 概述

2021-10-01 06:51:32 字數 3998 閱讀 8461

**執行可能會意外各種錯誤

程式的邏輯錯誤、使用者輸入不合法等都會引發異常,但它們不會導致程式崩潰

可以利用python提供的異常處理機制,在異常出現時及時捕獲並從內部消化掉

類名描述

assertionerror

當assert語句失敗時引發該異常

attributeerror

物件不存在此屬性

baseexception

所有異常的基類

exception

常規異常的基類

importerror

當匯入乙個模組失敗時引發該異常

indexerror

序列中無此索引/下標越界

ioerror

輸入/輸出操作失敗

keyboardinterrupt

使用者中斷執行(通常輸入ctr-c)

keyerror

對映中不存在此鍵

memoryerror

記憶體耗盡

nameerror

找不到名字(變數)

overflowerror

當算術運算結果超出表示範圍時引發該異常

recursionerror

當超過最大遞迴深度時引發該異常

runtimeerror

當產生其他所有類別以外的錯誤時引發該異常

stopiteration

當迭代器中沒有下乙個可獲取的元素時引發該異常

syntaxerror

python語法錯誤

taberror

當使用不一致的縮排方式時引發該異常

typeerror

對型別無效的操作

unboundlocalerror

引用未賦值的區域性變數時引發該異常

valueerror

傳入無效的引數

zerodivisionerror

除(或取模)運算的第二個引數為0

fileexistserror

當要建立的檔案或目錄已存在時引發該異常

filenotfounderror

當要訪問的檔案或目錄不存在時引發該異常

語法錯誤:syntaxerror

『>>>print 『bee』

syntaxerror: missing parentheses in call to 『print』. did you mean print(『bee』)?

除以0錯誤:zerodivisionerror

'>>> a=0;5/a

traceback (most recent call last):

zerodivisionerror: division by zero

下標越界:indexerror最為常見

這種包括列表、元組和字串,普遍存在。

』>>> al=[1,2,3,4];al[4]

indexerror: list index out of range

型別錯誤:typeerror

『>>> ls=[1,『2』];ls.sort()

typeerror: 『<』 not supported between instances of 『str』 and 『int』

訪問變數不存在:nameerror

引用變數前並沒有賦值,包括函式、類等未定義都會引發nameerror錯誤

』>>> x+=1

nameerror: name 『x』 is not defined

字典關鍵字不存在:keyerror

上述提到了下標越界錯誤,對字典來說,存在類似錯誤如上。

引發的錯誤還會提示不存在的關鍵字是什麼。

『>>> d=;d[2]

traceback (most recent call last):

keyerror: 2

未知的變數屬性:attributeerror

』>>> l=;l.sorted()

attributeerror: 『list』 object has no attribute 『sorted』

——如上sorted是內建函式,列表類中不存在方法sorted

以上這些錯誤會引起程式中止退出,如果希望掌控意外,就需要在可能出錯誤的地方設定陷阱捕捉錯誤

try-except-else-finally語句

try

:《檢測語句》

except

《錯誤型別》

[as e]

:《處理異常》

else

:《未發生錯誤而執行的**>

finally

:《無論是否發生錯誤都一定會執行的**>

針對不同異常可以設定多個except,乙個except多個異常項則以元組形式表示。

如果不標註錯誤型別,則捕捉所有的錯誤;如果標註錯誤型別,則僅捕捉該異常。

異常具有傳遞機制,如果呼叫函式中某處丟擲的異常沒有**捉處理的話就會一層層傳遞到上一級呼叫處,直到**捉,如果一直未**捉,程式就會因為異常結束。

給定乙個輸入input,如何控制使用者輸入的內容?

我們可以使用關鍵字raise產生異常,與while true和break組合使用來控制輸入的內容。

raise關鍵字是用來產生異常的,一般來說需要內建的異常型別,但是也可以自行建立異常型別。

while

true

:try

: a=

input()

ifnot a.isdigit():

raise valueerror

else

:break

except

:print

('請輸入純數字!'

)print

('hi!'

)

使用關鍵字assert可以判斷乙個條件是否成立,如果成立則繼續執行後面的語句;如果不成立則會引發assertionerror異常

while

true

:try

: a=

input()

assert a.isdigit(

)break

except

:print

('請輸入純數字!'

)print

('hi!'

)

自定義異常,實際上就是以baseexception類作為父類建立乙個子類。

class

hanpierror

(baseexception)

:def

__init__

(self,a)

: self.yala=a

def__str__

(self)

:return self.yala

while

true

:try

: a=

input

('請輸入:')if

not a.isdigit():

raise hanpierror\

('輸入錯誤,輸入內容為%s,請輸入純數字!'

%a)else

:break

except hanpierror as e:

print

(e)print

('輸入正確!'

)

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...