關於異常和異常捕獲。

2021-08-29 20:20:21 字數 2536 閱讀 1672

異常即非正常狀態,主要包括書寫或語法上的錯誤導致直譯器無法正常執行。

異常描述

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