異常主要分為四大類,所有異常都是類的形式,均繼承了baseexception這個類。其中systemexit為python的退出異常,keyboardinterrupt為鍵盤的中斷異常,generatorexit為生成器的退出異常。最後一種也是我們通常會遇到的異常exception普通異常。普通異常包括我們平時會經常遇到的異常型別,如下圖所示。
當程式執行過程中發生錯誤程式就會終止,為了避免這一情況我們需要捕獲異常。
try/except
捕獲由python或你引起的異常並恢復
try/finally
無論異常是否發生,執行清理行為
在目前的python版本中except和finally可以同時出現,除此之外還有else語句,其後的語句會在程式未發生異常的時候執行,而finally後的語句無論是否發生異常都會執行。
try:
print(aaa)#
錯誤**
except
exception as e:
print("
錯誤資訊:
",e)
>>>錯誤資訊: name '
aaa'
isnot defined
try:
#print(aaa)#錯誤**
print('
aaa')#
正確**
except
exception as e:
print("
錯誤資訊:
",e)
else
:
print("
else執行!!")
>>>aaa
else執行!!
tryraise語句會手動在**中觸發異常。其功能主要用於程式的除錯。:
print(aaa)#
錯誤**
#print('aaa')#正確**
except
exception as e:
print("
錯誤資訊:
",e)
finally
:
print("
finally執行!!")
>>>錯誤資訊: name '
aaa'
isnot
defined
finally執行!!
try:
#print(aaa)#錯誤**
print('
aaa')#
正確**
except
exception as e:
print("
錯誤資訊:
",e)
finally
:
print("
finally執行!!")
>>>aaa
finally執行!!
raiseassert語句會有條件的在程式**中觸發異常。assert 條件表示式,當條件表示式返回值為true時,不報錯。當條件表示式返回值為false時,報錯。報錯型別為assertionerror。nameerror
>>>traceback (most recent call last):
file
"/home/pyvip/joepy/home/pyvip/joepy/test.py
", line 58, in
raise
nameerror
nameerror
assert 1>2>>>traceback (most recent call last):
file
"/home/pyvip/joepy/home/pyvip/joepy/test.py
", line 59, in
assert 1>2assertionerror
python異常和斷言
在寫程式時可能會遇到錯誤,整個程式就會崩潰,但我們希望程式能檢測錯誤並繼續執行。這可以使用try except語句來處理,把可能出錯的語句放在try子句中,如果發生錯誤,則轉到except子句。try print 2 0 except zerodivisionerror print error in...
Python中異常和斷言
異常的型別主要有 exception 所有異常的基類 attributeerror 不存在屬性 ioerror 輸入或輸出異常 importerror 無法引入模組或包。一般是路徑問題或模組名稱有誤 indentationerror 語法錯誤 syntaxerror子類 一般是 縮排錯誤 keyer...
python基礎 異常處理及斷言
異常有很多種型別,常見的由語法錯誤 syntaxerror 型別錯誤 typeerror 名字錯誤 nameerror 等等,但我們要知道的是異常本身就是乙個類的例項,所有的異常都繼承於這個baseexception,在這個父類上又下分了下面四大類 systemexit python退出異常 key...