python學習7 異常

2022-05-02 16:48:14 字數 4895 閱讀 8916

定義異常

python 用異常物件(exception object)來表示異常情況,遇到錯誤後,會引發異常,如果異常物件未**捉或處理,程式就會用所謂的回溯    (tracebace)執行終止:

1 >>> 1/023

traceback (most recent call last):

4 file "

", line 1, in

5 1/0

6 zerodivisionerror: integer division or modulo by zero

raise: 自己引發異常,程式會自動建立例項

1 >>> raise

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

python 內建的異常類有很多,這些異常類都在exceptions 模組中

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
捕捉異常格式如下:

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

8 the first num: 10

9the second num: 0

10 the second number cat'

t be zero

ps:如果沒有捕捉異常,它就會被呼叫他的函式的方法體內的 try 捕捉到,依次類推,也就是說 ,你可以捕捉到在其他人的函式中所引發的異常

多個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

"

捕捉物件

1

try:

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

全捕捉 --任何異常都不放過,呵呵

1

try:

2 x = input("

the first num: ")

3 y = input("

the second num: ")

4print x/y

5except:6

print

"hahaha

"

else --  在沒有捕捉到異常情況下 出發

1

try:

2 x = input("

the first num: ")

3 y = input("

the second num: ")

4print x/y

5except:6

print

"hahaha"7

else:8

print

"it's ok

"

finally  -- 在可能的異常後進行清理,與 try  聯合使用

1

try:

2 1/0

3except:4

print

"err"5

else:6

print

"it's ok"7

finally:8

print

"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...