Python的異常檢測和處理

2021-10-04 08:34:05 字數 2146 閱讀 6376

exception  捕獲所有錯誤

nameerror 變數沒有被定義

syntaxerror 語法錯誤

indexerror list超出索引範圍

keyerror 字典超出索引範圍

valueerror 值錯誤

attributeerror 屬性錯誤

菜鳥:

官網:traceback 會追蹤異常,一直到最終錯誤發生的地方。下面顯示了完整的呼叫棧。顯示了錯誤產生於那個檔案的第幾行,最後面會顯示程式產生的是哪一種錯誤,已經錯誤最開始發生的地方。

語法結構:

try

:語#執行別的**

except:語

#如果在try部份引發了'valueerror'異常

except

:語#如果引發了'zerodivisionerror'異常,獲得附加的資料

else

:語#如果沒有異常發生

finally:

語#無論異常是否發生都執行

例項捕獲多個異常

try

: year =

int(

input

('input year:'))

except

(keyerror,valueerror,attributeerror)

:# except (keyerror,valueerror,attributeerror) 捕獲多個異常

print

('年份要輸入數字'

)#捕獲錯誤,輸出自定義提示

把異常資訊賦值給變數

try

:print(1

/0)except zerodivisionerror as e:

#(把異常資訊賦值給變數,然後輸出,除錯用)

print

('0不能做除數 %s'

% e )

#輸出結果

0不能做除數 division by zero

exception捕獲所有錯誤

try

:print(1

/0)except exception as e:

print

('%s'

% e)

finally使用
try

: a =

open

('name.txt'

)except exception as e :

print

(e)finally

:#用來關閉檔案

a.close(

)

我們可以使用raise語句自己觸發異常

raise語法格式如下:

raise [exception [, args [, traceback]]]

語句中 exception 是異常的型別(例如,nameerror)引數標準異常中任一種,args 是自已提供的異常引數。

最後乙個引數是可選的(在實踐中很少使用),如果存在,是跟蹤異常物件。

重新定義錯誤型別

try:10

/0except zerodivisionerror:

raise valueerror(

'input error!'

)

raise語句如果不帶引數,就會把當前錯誤原樣丟擲。

1、所有的異常都繼承於baseexception;

2、發生異常後,後面的語句將不再執行;

3、exception 會博會所有異常;

4、try:… except 可以使用異常巢狀;

5、程式執行中,當前面的異常**獲後,後面的異常將不會**獲。

廖雪峰官方**:

Python異常的處理和檢測

在python程式執行過程中發生的異常可以通過try語句來檢測,可以把需要檢測的語句放置在try塊裡面,try塊裡面的語句發生的異常都會被try語句檢測到,並丟擲異常給python直譯器,python直譯器會尋找能處理這一異常的 並把當前異常交給其處理。這一過程稱為捕獲異常。如果python直譯器找...

Python異常和異常處理

python異常和異常處理 2017年12月20日 22 17 08 megustas jjc 閱讀數 114 標籤 python 異常處理 更多 個人分類 python while true filename raw input please input a file to open try da...

Python異常處理和異常型別

try some functions.except exception,e print e try some functions.except exception as e print e 注意這裡exception,e變成了exception as e 1.nameerror 嘗試訪問乙個未申明的...