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 常見的內...