python異常捕捉處理機制

2021-10-11 14:43:11 字數 2957 閱讀 9599

python中捕捉異常常用句式try…except…

try 語句按照如下方式工作;

乙個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多只有乙個分支會被執行。

處理程式將只針對對應的 try 子句中的異常進行處理,而不是其他的 try 的處理程式中的異常。

乙個except子句可以同時處理多個異常,這些異常將被放在乙個括號裡成為乙個元組,例如:

except

(runtimeerror, typeerror, nameerror)

:pass

接下來我們來寫乙個具體的demo來看一下:

try

:print

(a)except nameerror as e:

print

(e)>>

>name 'a'

isnot defined

以上程式可看到try中執行乙個未定義的變數,執行報錯,報錯資訊則被下面except給接住了,並輸出了具體的錯誤資訊,錯誤的型別則為nameerror 。

若我們將錯誤型別修改一下,情況如下示例:

try

:print

(a)except ioerror as e:

print

(e)

會發現執行以上程式仍就報錯了,這是因為錯誤型別本該是nameerror ,我們卻用ioerror 進行接收,發現報錯與except中不匹配,則仍舊執行了try中的程式。如果我們在執行時不清楚具體的錯誤型別,可以用異常的基類,

baseexception或者我們常用的錯誤型別集合exception。

try

: fh =

open

("testfiles"

,"r"

)print

(fh.readlines())

except baseexception as e:

print

(e)>>

>

[errno 2

] no such file

or directory:

'testfiles'

try…except…else…

else後面是如果程式執行沒有異常的話,則需要在執行一次else裡面的內容,若存在異常,則不會執行else裡面的內容。

try

:print

('執行程式'

)except exception as e:

print

('異常資訊是:'

+str

(e))

else

:print

('沒有異常'

)>>

>執行程式

>>

>沒有異常

try…finally…

finally後面是無論以上程式有沒有異常報錯,都會執行finally裡面的內容,起到乙個兜底的作用。

try

:print

(abc)

except exception as e:

print

('異常資訊是:'

+str

(e))

else

:print

('沒有異常'

)finally

:print

('以上程式執行完畢'

)>>

>異常資訊是:name 'abc'

isnot defined

>>

>以上程式執行完畢

raise exception

丟擲異常,rasise是我們手動去丟擲的一些異常,可能有些業務規則不滿足我們的需求,程式又沒有語法實質性的錯誤,所以我們可以自定義丟擲錯誤。

a =

10if a>5:

raise exception(

'a不能超過5'

)>>

> traceback (most recent call last)

:>>

> file "e:/python/selenium/learn/pythonfirst/firstapi.py"

, line 45,in

>>

>

raise exception(

'a不能超過5'

)>>

>exception: a不能超過5

還有一些時候我們捕捉到了異常,並不想對其進行處理,想再次把它丟擲去,我們還可以這樣寫:

try

:print

(a)except nameerror:

print

('**執行中.......'

)raise

>>

>**執行中...

....

>>

>traceback (most recent call last)

:>>

> file "e:/python/selenium/learn/pythonfirst/firstapi.py"

, line 38,in

>>

>

print

(a)>>

>nameerror: name 'a'

isnot defined

以上可看到程式捕捉到了nameerror,然後再次將其拋了出去。

Python 異常處理機制

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...

Python異常處理機制

部落格核心內容 1.常見的異常型別 2.異常處理機制 3.異常處理方法 4.try catch到底什麼時候用 一 python中常見的異常型別 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 imp...

Python異常處理機制

在構建乙個魯棒性較強的python專案時,合適的異常處理機制,是相當重要的。本文主要介紹python異常處理機制的基本概念和常用的異常處理方法。在python中使用異常物件來表示異常狀態,並在遇到錯誤時引發異常。異常物件未被處理 或捕獲 時,程式將終止並顯示一條錯誤訊息 traceback 常見的內...