「life is short, you need python」 – bruce eckel
environment
程式執行過程中可能碰到各種各樣的異常,如果未預設處理方式,程式將中斷執行。這裡記錄一些 python 中異常處理的內容。
python 所有內建異常類參考python官方文件的內容,中文內容總結可以參考fishc的python標準異常總結文章。
這裡搞幾個小例子看看
x +
1# 報錯 nameerror
1/0
# 報錯 zerodivisionerror
ls =[9
,5,2
,7]ls[4]
# 報錯 indexerror
d =d[0
]# 報錯 keyerror
在碼**時,就應該盡可能地對所有預知可能出現的異常進行捕獲並設定好處理方式,以保證程式能夠順利執行而不崩潰,增強程式的穩定性和使用體驗。
異常檢測的語法如下
try
: 檢測內容
except exception [
as error]
: 出現異常(exception)後的處理內容
[else
: 未出現 except 中的異常時執行的內容,相當於乙個分支]
[finally
: 不論是否發生異常,最終都要執行的內容]
例乙個except
,單分支
res =
0try
: res =1/
0except zerodivisionerror as error:
print
(error)
else
:print
(res)
finally
:print
('the division task has been done.'
)# division by zero
# the division task has been done.
例多個except
,多分支
d =
try:
print
(d[0])
except nameerror:
print
('nameerror triggered.'
)except keyerror:
print
('keyerror triggered.'
)except indexerror:
print
('indexerror triggered.'
)# keyerror triggered.
注意異常類之間的關係,如 exception 為大部分異常類的基類,對 exception 的捕獲包含了對其子類的捕獲
例zerodivisionerror 繼承於 arithmeticerror, arithmeticerror 繼承於 exception。那麼對 arithmeticerror 進行捕獲,就可以捕獲到 zerodivisionerror;對 exception 進行捕獲,就可以捕獲到 arithmeticerror 和 zerodivisionerror。
try
: res =1/
0except zerodivisionerror as error:
print
(error)
# division by zero
try:
res =1/
0except arithmeticerror as error:
print
(error)
# division by zero
try:
res =1/
0except exception as error:
print
(error)
# division by zero
raise
引發異常
try
:for i in
range(3
):for j in
range(3
):if i ==2:
raise keyboardinterrupt
print
(i, j)
except keyboardinterrupt:
print
('end'
)
Python學習筆記(八)異常
8異常 8.1什麼是異常 python用異常物件來表示異常情況。每乙個異常都是一些類的例項,這些例項可以被印發,並且可以用很多種方法進行捕捉並且對其進行處理,而不是讓整個程式失敗。8.2按自己的方式出錯 8.2.1raise語句 為了引發異常,可以使用乙個類 可以是exception的子類 或者例項...
Python學習記錄八 異常
異常 python用異常物件 exception object 來表示異常情況。遇到錯誤後,會引發異常。如果異常物件並未被處理或捕捉,程式就會用所謂的回溯 traceback,一種錯誤資訊 終止執行。1 raise語句 raise exception traceback most recent ca...
Python學習筆記 第八章 異常
python用異常物件來表示異常情況,遇到錯誤後會引發異常。如果異常物件未被處理或捕捉,程式就會用所謂的回溯終止執行 使用乙個類 exception及其子類 或者類例項呼叫raise語句可以引發異常。python內建異常可以在exceptions模組中找到,可以使用dir列出模組內容 dir exc...