Python的異常處理

2021-06-27 08:08:24 字數 3256 閱讀 2644

python中的異常型別分如下幾種:

1、nameerror:嘗試訪問乙個未申明的變數

>>>  v

nameerror: name 'v' is not defined

2、zerodivisionerror:除數為0

>>> v = 1/0

zerodivisionerror: int division or modulo by zero

3、syntaxerror:語法錯誤

>>> int int

syntaxerror: invalid syntax (, line 1)

4、indexerror:索引超出範圍

>>> list = [2]

>>> list[3]

traceback (most recent call last):

file "", line 1, in

list[3]

indexerror: list index out of range

5、keyerror:字典關鍵字不存在

>>> dic =

>>> dic['3']

traceback (most recent call last):

file "", line 1, in

dic['3']

keyerror: '3'

6、ioerror:輸入輸出錯誤

>>> f = open('abc')

ioerror: [errno 2] no such file or directory: 'abc'

7、attributeerror:訪問未知物件屬性

>>> class worker:

def work():

print("i am working")

>>> w = worker()

>>> w.a

traceback (most recent call last):

file "", line 1, in

w.aattributeerror: 'worker' object has no attribute 'a'

8、valueerror:數值錯誤

>>> int('d')

traceback (most recent call last):

file "", line 1, in

int('d')

valueerror: invalid literal for int() with base 10: 'd'

9、typeerror:型別錯誤

>>> istr = '22'

>>> ival = 22

>>> obj = istr + ival;

traceback (most recent call last):

file "", line 1, in

obj = istr + ival;

typeerror: can't convert 'int' object to str implicitly

10、assertionerror:斷言錯誤

>>> assert 1 != 1

traceback (most recent call last):

file "", line 1, in

assert 1 != 1

assertionerror

預設的異常處理器

**如下:

s = 'hello girl!'

print s[100]

print 'continue'

如果我們沒有對異常進行任何預防,那麼在程式執行的過程中發生異常,就會中斷程式,呼叫python預設的異常處理器,並在終端輸出異常資訊。這種情況下,第3行**不會執行。

try…except

**如下:

s = 'hello girl!'

try:

print s[100]

except indexerror:

print 'error...'

print 'continue'

程式執行到第2句時發現try語句,進入try語句塊執行,發生異常,回到try語句層,尋找後面是否有except語句。找到except語句後,會呼叫這個自定義的異常處理器。except將異常處理完畢後,程式繼續往下執行。這種情況下,最後兩個print語句都會執行。

except後面也可以為空,表示捕獲任何型別的異常。

try…finally

**如下:

s = 'hello girl!'

try:

print s[100]

finally:

print 'error...'

print 'continue'

finally語句表示,無論異常發生與否,finally中的語句都要執行。但是,由於沒有except處理器,finally執行完畢後程式便中斷。這種情況下,倒第2個print會執行,到第1個不會執行。如果try語句中沒有異常,三個print都會執行。

assert

**如下:

assert false,'error...'

print 'continue'

這個語句,先判斷assert後面緊跟的語句是true還是false,如果是true則繼續執行print,如果是false則中斷程式,呼叫預設的異常處理器,同時輸出assert語句逗號後面的提示資訊。本例情況下,程式中斷,提示error,後面的print不執行。

with…as

**如下:

with open('nothing.txt','r') as f:

f.read()

print 2/0

print 'continue'

我們平時在使用類似檔案的流物件時,使用完畢後要呼叫close方法關閉,很麻煩。這裡with…as語句提供了乙個非常方便的替代方法:open開啟檔案後將返回的檔案流物件賦值給f,然後在with語句塊中使用。with語句塊完畢之後,會隱藏地自動關閉檔案。

如果with語句或語句塊中發生異常,會呼叫預設的異常處理器處理,但檔案還是會正常關閉。

這種情況下,會丟擲異常,最後的print不執行。

參考:《python核心程式設計》

python中的異常型別

python中的五種異常

python異常處理 Python 異常處理

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

Python的異常處理

1.raise語句 為了引發異常,可以使用乙個類或者例項呼叫raise語句。raise exceptiontraceback most recent call last file line 1,in exception raise exception hyperdive overload trace...

Python的異常處理

異常就是不正常的情況,程式開發過程中錯誤和bug都是補充正常的情況 異常發生的後果 引發程式崩潰 處理異常 容錯 包容出現的不正常的錯誤,保證程式的正常執行 異常處理的目的 提高 的穩定性和健壯性 try except 異常捕獲處理 assertions 斷言測試 try 可能出現異常的 excep...