定義異常
python 用異常物件(exception object)來表示異常情況,遇到錯誤後,會引發異常,如果異常物件未**捉或處理,程式就會用所謂的回溯 (tracebace)執行終止:
1 >>> 1/023raise: 自己引發異常,程式會自動建立例項traceback (most recent call last):
4 file "
", line 1, in
5 1/0
6 zerodivisionerror: integer division or modulo by zero
1 >>> raisepython 內建的異常類有很多,這些異常類都在exceptions 模組中exception23
traceback (most recent call last):
4 file "
", line 1, in
5raise
exception
6exception
7 >>> raise exception("
hahahahahaha")
89traceback (most recent call last):
10 file "
", line 1, in
11raise exception("
hahahahahaha")
12 exception: hahahahahaha
1 >>>dir(exceptions)一些重要的異常類2 ['
arithmeticerror
', '
assertionerror
', '
attributeerror
', '
baseexception
', '
buffererror
', '
byteswarning
', '
deprecationwarning
', '
eoferror
', '
environmenterror
', '
exception
', '
floatingpointerror
', '
futurewarning
', '
generatorexit
', '
ioerror
', '
importerror
', '
importwarning
', '
indentationerror
', '
indexerror
', '
keyerror
', '
keyboardinterrupt
', '
lookuperror
', '
memoryerror
', '
nameerror
', '
notimplementederror
', '
oserror
', '
overflowerror
', '
pendingdeprecationwarning
', '
referenceerror
', '
runtimeerror
', '
runtimewarning
', '
standarderror
', '
stopiteration
', '
syntaxerror
', '
syntaxwarning
', '
systemerror
', '
systemexit
', '
taberror
', '
typeerror
', '
unboundlocalerror
', '
unicodedecodeerror
', '
unicodeencodeerror
', '
unicodeerror
', '
unicodetranslateerror
', '
unicodewarning
', '
userwarning
', '
valueerror
', '
warning
', '
windowserror
', '
zerodivisionerror
', '
__doc__
', '
__name__
', '
__package__
']
自定義異常類,只要這個異常類 繼承 exception
>>> calss autoerror(exception):pass捕捉異常格式如下:
1ps:如果沒有捕捉異常,它就會被呼叫他的函式的方法體內的 try 捕捉到,依次類推,也就是說 ,你可以捕捉到在其他人的函式中所引發的異常try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except
zerodivisionerror:
6print
"the second number cat't be zero"7
8 the first num: 10
9the second num: 0
10 the second number cat'
t be zero
多個except:
1用乙個塊捕捉多個異常try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except
zerodivisionerror:
6print
"the second number cat't be zero"7
except
typeerror:
8print
"that wasn't a number ,was it
"
1捕捉物件try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except
(zerodivisionerror,typeerror):
6print
"the numbers was bug
"
1try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except
(zerodivisionerror,typeerror),e: # 在python 3.0 中,格式為except (zerodivisionerror,typeerror) as e
6全捕捉 --任何異常都不放過,呵呵print e
1else -- 在沒有捕捉到異常情況下 出發try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except:6
"hahaha
"
1finally -- 在可能的異常後進行清理,與 try 聯合使用try:
2 x = input("
the first num: ")
3 y = input("
the second num: ")
4print x/y
5except:6
"hahaha"7
else:8
"it's ok
"
1try:
2 1/0
3except:4
"err"5
else:6
"it's ok"7
finally:8
"cleaning up"9
10 >>>
11err
12 cleaning up
7 python異常處理 異常基類學習
部分內容摘選自菜鳥教程 及 瘋狂python講義 李剛 異常機制已經成為判斷一門語言是否成熟的標準。python的異常處理機制主要依賴try except else finally和raise五個關鍵字,其中 try語句按照如下方式工作 首先,執行try子句 在關鍵字try和關鍵字except之間的...
Python學習 異常
異常可以描述為 它是因為程式出現了錯誤而在正常控制流以外採取的行為。這個行為分為兩個階段 首先是引起異常發生錯誤,然後是採取措施處理階段。開發人員在編寫程式時,難免會遇到錯誤。開發人員在編寫程式時需要分析這些可能會造成異常的情況,從而保證程式流暢且穩定執行,而在這種情況下異常捕獲與處理就成為避免程式...
python學習之異常
多個execpt捕獲異常 try x input enter the first number y input enter the second number print int x int y except zerodivisionerror print the second number can...