python中常見的異常型別
nameerror:嘗試訪問乙個為申明的變數。
zerodivisionerror:除數為零錯誤。
syntaxerror:直譯器語法錯誤,這是乙個唯一不在執行時發生的異常,在執行前直譯器就會顯示其錯誤。
indexerror:請求的索引超出範圍。
keyerror:請求乙個不存在的字典的關鍵字。
ioerror:輸入/輸出錯誤(io錯誤)。
attributeerror:嘗試訪問未知的物件屬性。
typeerror:型別錯誤,引數等型別不匹配。
exception:捕獲所有異常。
python檢測和處理異常
異常處理使用主要有兩個語句
try
:pass
except 錯誤型別 as e:
print
(e)pass
try:
pass
finally
:pass
注意
try中的**發生錯誤丟擲異常,except根據自己的異常型別判斷是否捕獲這個異常。乙個try可以跟多個except。和c++類似,exception異常型別可以捕獲除了sys.exit()丟擲的程式退出型別以外的任何異常型別。as e是產生乙個異常型別的物件,然後print(e)會列印出異常型別資訊。
如果try中**未發生異常,就會跳過。如果try**現異常,但是except的異常型別與異常不匹配,那麼程式就會在異常語句直接掛掉
try-finally子句,finally子句只能有乙個,也可以使用try-except-finally混合語句。finally的語句無論錯誤是否發生都會被執行。如果是混合的話finally寫在最後。
也可以指定確定的異常型別,因為一般**中不同的異常可能補救處理不同,使用try和多個except即可。
如果對於某個型別異常你不想做處理,你可以在其except**塊中寫pass即可,但是程式會報錯。
異常處理中else關鍵字
try
:pass
except typeerror:
print
("型別錯誤"
)else
:print
("else子句"
)finally
:print
("finally子句"
)
異常語句可以跨層次
下乙個簡單的**來說明
def
func
(s):
return10/
int(s)
defhelp
(s):
return func(s)*10
defmain()
:try
:help
('0'
)except exception as e:
print
(e)finally
:print
("finally"
)main(
)""" 結果:
division by zero
finally
"""
上面的**就實現了跨層次的捕獲異常,首先func將異常拋給help然後help將異常拋給main,然後main處理異常。
主動觸發異常
raise語句就是用來出動主動丟擲異常的,類似於c++的throw一樣,使用格式如下:
def
div(a,b)
:# 做a/b
if b ==0:
raise zerodivisionerror(
"division by error"
)return a / b
自定義異常型別
自己實現乙個類,然後需要繼承expection類。
class
myerror
(exception)
:def
__init__
(self,msg)
: self.mymsg = msg
# 過載print函式
def__str__
(self)
:return self.mymsg
try:
raise myerror(
"my error"
)except myerror:
print
("myerror"
)
斷言
和c中的assert一樣,如果assert子句條件不成立就會丟擲assertionerror型別的異常。否則就不做任何事。
a =
12b =
0assert b !=0,
"division by zero"
tmp = a / b
print
("end")a=
12b=
0try
:assert b !=0,
"division by zero"
tmp = a /b
except assertionerror as a:
print
(a)
第一種**程式會崩潰,並列印字串;第二種也可以直接捕獲異常。
提取碼:cpit
簡單總結,如有錯誤!請批評指導!!!
python極簡筆記 異常
異常 def exceptionfunc print 7 0 exceptionfunc 使用try except 處理異常 def sloveexecption try print 7 0 except zerodivisionerror print divide by zero sloveexe...
Python學習 異常
異常可以描述為 它是因為程式出現了錯誤而在正常控制流以外採取的行為。這個行為分為兩個階段 首先是引起異常發生錯誤,然後是採取措施處理階段。開發人員在編寫程式時,難免會遇到錯誤。開發人員在編寫程式時需要分析這些可能會造成異常的情況,從而保證程式流暢且穩定執行,而在這種情況下異常捕獲與處理就成為避免程式...
python學習筆記簡書 Python學習筆記
1.輸入 輸出 1 輸出 printf aaa printf aa a printf 100 200 100 200 結果為aaa aa a 100 200 300 輸出不輸出回車方法 print end 2 輸入 name intput printf name 結果為mike mike name ...