在寫程式時可能會遇到錯誤,整個程式就會崩潰,但我們希望程式能檢測錯誤並繼續執行。這可以使用try-except
語句來處理,把可能出錯的語句放在try
子句中,如果發生錯誤,則轉到except
子句。
try
:print(2
/0)except zerodivisionerror:
print
('error: invalid argument.'
)
這個**處理了除數為0的異常。在**except
語句中提到了zerodivisionerror
異常,此外還有其它異常,詳見python文件。
如果要捕獲多個異常時,可以用元組的形式寫在同乙個exception
語句裡;如果要捕獲全部的異常資訊,則可以寫成exception
,如
except
(valueerror, attributeerror, keyerror)
:except exception:
也可以通過except
語句開始執行後,不會返回try
子句執行錯誤語句後面的句子。
raise
語句丟擲自己的異常。通常,使用try-except
語句呼叫函式,raise
語句寫在這個函式中,如
def
func
(one)
:if one ==1:
raise exception(
'one'
)print
(one)
try:
func(2)
func(1)
except exception as err:
print(+
str(err)
)
捕獲異常時的as
語句可以獲取異常資訊。
try-except
語句後還可寫finally
語句,無論try
子句是否成功,都會執行finally
語句中的內容,如
try
: a = opne(
'name.txt'
)except exception as e:
print
(e)finally
: a.close(
)
無**件是否被開啟,最終都會被關閉。問價開啟的的異常處理還可簡化為上下文管理器形式上下文管理器形式。
斷言是乙個完整性檢查,確保**沒有做什麼明顯錯誤的事情。
s =
'abc'
assert s ==
'abc'
s ='xyz'
assert s ==
'abc'
上面**希望確定字串s
是abc
。如果檢查失敗,則丟擲異常。
在執行python時,傳入-o
選項可以禁用斷言。
Python中異常和斷言
異常的型別主要有 exception 所有異常的基類 attributeerror 不存在屬性 ioerror 輸入或輸出異常 importerror 無法引入模組或包。一般是路徑問題或模組名稱有誤 indentationerror 語法錯誤 syntaxerror子類 一般是 縮排錯誤 keyer...
python基礎(十) 異常和斷言
異常主要分為四大類,所有異常都是類的形式,均繼承了baseexception這個類。其中systemexit為python的退出異常,keyboardinterrupt為鍵盤的中斷異常,generatorexit為生成器的退出異常。最後一種也是我們通常會遇到的異常exception普通異常。普通異常...
python基礎 異常處理及斷言
異常有很多種型別,常見的由語法錯誤 syntaxerror 型別錯誤 typeerror 名字錯誤 nameerror 等等,但我們要知道的是異常本身就是乙個類的例項,所有的異常都繼承於這個baseexception,在這個父類上又下分了下面四大類 systemexit python退出異常 key...