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子句去獲得這個物件
classmyexception(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 還會丟擲errorf =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...