Python之異常處理

2022-06-08 14:21:13 字數 1972 閱讀 7182

1.程式在異常丟擲的地方中斷執行,如果不捕獲,就會提前結束程式

raise語句

raise後什麼都沒有,表示丟擲最近乙個被啟用的異常,如果沒有被啟用的異常,則拋型別異常

raise後要求應該是baseexception類的子類或者例項,如果是類,將被無參例項化

baseexception是所有內建異常類的基類

#sys.exit()函式引發的異常,如果異常不捕獲處理,就直接交給python直譯器,直譯器直接退出

import sys

try:

sys.exit(1)

except systemexit:

print('exit')

print('outer')

exception及其子類

exception是所有內建的,非系統退出的異常的基類,自定義異常應該繼承自它

syntaxerror語法錯誤,python將這種錯誤也歸到異常類下面的exception子類,但是這種錯誤是不可捕獲的

arithmeticerror

所有算數計算引發的異常,其子類有除零異常等

lookuperror

使用對映的鍵或者序列的縮影無效是引發的異常的基類:indexerror,keyerror

自定義異常

從exception繼承得類

捕獲原則,從小到大,從具體到寬泛,捕獲不到就向外丟擲異常,如果被乙個exception語句捕獲,其他的就不會在捕獲異常了

as子句

被丟擲的異常應該是異常的例項,使用as子句去獲得這個物件

class

myexception(exception):

def__init__

(self,code,message):

self.code =code

self.message =message

try:

raise myexception('

400','

error')

except

myexception as e:

print('

{}-->{}

'.format(e.code,e.message))

finally子句

finally最終,即最後一定會執行的,try。。。finally語句中不管是否發生了異常都要執行finally

open函式開啟檔案失敗就不會賦值給f ,如果不給f=none 判斷f 還會丟擲error

f =none

try:

f = open('

abcdefg')

except

exception as e:

print('{}'

.format(e))

finally

:

print("

clean workstation")

iff:

f.close()

#f.close()

try的工作原理

1.如果try中語句執行時發生異常,搜尋except子句,並執行第乙個匹配該異常的except子句

2.如果try中語句執行發生異常,卻沒有匹配的except子句,異常將被遞交到外層try,還不處理,繼續丟擲,還不處理終止異常所在的執行緒

3.如果在try執行時沒有發生異常,將會執行else子句中的語句

4.無論try中是否發生異常,finally子句都會執行

python之異常處理 Python之異常處理

異常物件 請大家執行如下 a 100 0 print a 就會發現直譯器顯示如下的錯誤提示 traceback most recent call last file x.py line 1,in a 100 0 zerodivisionerror division by zero 大家要學會看直譯器...

Python之異常處理

在程式執行過程中影響程式正常執行的內容,稱為異常 nameerror print a indexerror 索引錯誤 li 1,2,3,4 print li 8 keyerror d dict a 1,b 2 print d f zerodivisionerror 除0錯誤 print 10 2 2...

Python之異常處理

try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 exce...