異常即非正常狀態,主要包括書寫或語法上的錯誤導致直譯器無法正常執行。
異常描述
importerror
匯入模組/物件失敗
indexerror
序列中沒有此索引(index)
keyerror
對映中沒有這個鍵
nameerror
未宣告/初始化物件 (沒有屬性)
syntaxerror
python 語法錯誤
indentationerror
縮排錯誤
systemerror
一般的直譯器系統錯誤
typeerror
對型別無效的操作
try
:pass
# 要捕獲的異常**
except exception as e:
# 在except語句中放在是出現異常時需要設定的**
# exception:異常類,能捕獲常見的異常
# e:接收錯誤原因
pass
try
:# 匯入不存在的模組
# 後面的**不受影響
import zhiyou
except importerror as e:
print
('錯誤原因:'
,e)
stu_list =
try:
print
(stu_list[0]
)except indexerror as e:
print
('索引異常:'
, e)
try
: file_test =
open
('student.txt'
,'w'
)except exception as e:
print
("error: "
,e)else
:# 如果try語句執行失敗,會執行except分支輸入錯誤原因
# 如果try語句執行成功,會執行else分支
print
("檔案建立成功"
)
try
:import zhiyou
except exception as e:
print
('錯誤原因:'
, e)
finally
:# 不管try執行成功還是失敗都會執行finally分支裡的語句
print
('finall執行了'
)
try
:import p
except exception as e:
print
('error:'
, e)
else
:print
('else語句執行了'
)finally
:print
('finally語句執行了'
)print
('異常語句外的內容'
)
raise:丟擲異常關鍵字
自定義觸發異常和捕獲自定義異常
def
is_outrange
(age)
:if age <18:
# 在函式內部自定義乙個異常
# 當呼叫該函式時如果不符合函式內部定義的條件則丟擲這個異常
# raise:丟擲異常關鍵字
raise exception(
'未成年人不允許進入網咖'
)else
:return
true
try:
res = is_outrange(13)
if res:
print
('年齡符合,可以進入'
)except exception as e:
print
('不能進入'
)
上述**段在except分支裡可以接收到異常並輸出。
class
divisionerror
(valueerror)
:# 自定義異常類
pass
deffoo
(num)
:if num ==0:
# raise exception
# raise valueerror('除數不能為0')
# raise zerodivisionerror('除數不能為0')
raise divisionerror(
'除數不能為0'
)
foo(1)
foo(2)
foo(
0)
上述**段輸出為 關於異常捕獲
你可以查一下你的sdk,裡面有很多的exception的定義,其基類其實都是system.exception一樣。但system.exception只提供了一些一般異常的處理。更多的需要專業的來處理。比如找不到檔案,你必須捕捉system.io.filenotfoundexception這個異常。在...
oracle plsql 捕獲異常和丟擲異常
在寫oracle儲存過程的時候很多東西放到儲存過程裡面比如一些判斷等,要比在程式邏輯裡面簡單很多,但是也會涉及到捕獲和丟擲一樣的問題。exception when excepttion name1 then when excepttion name2 then when excepttion nam...
捕獲和丟擲異常
異常處理5個關鍵字 try catch finally throw throws 不捕獲異常 public class test 捕獲異常,finally 可以不要,用於 假設io資源關閉,就會用到。public class test catch arithmeticexception e fina...