異常
廣義上的錯誤分為錯誤和異常
錯誤指的是可以人為避免
異常是指在語法邏輯正確的前提下,出現的問題
在python裡,異常是乙個類,可以處理和使用**
異常的分類
異常處理
不能保證程式永遠正確執行,但是,必須保證程式在最壞的情況下得到的問題被妥善處理
python的異常處理模組全部語法為:
try
: #嘗試實現某個操作,
#如果沒出現異常,任務就可以完成
#如果出現異常,將異常從當前**塊扔出去嘗試解決異常
except 異常型別1
: 解決方案1:用於嘗試在此處處理異常解決問題
except 異常型別2:
解決方案2:用於嘗試在此處處理異常解決問題
except (異常型別1
,異常型別2...
) 解決方案:針對多個異常使用相同的處理方式
excpet:
解決方案:所有異常的解決方案
else
: 如果沒有出現任何異常,將會執行此處**
finally
: 管你有沒有異常都要執行的**
流程
執行try下面的語句
案例1:簡單異常案例
try
: num =
int(
input
("請輸入number:"
))
result =
100/num;
print
("the result is:"
.format
(result)
)except syntaxerror:
print
("這是語法有錯誤!!!"
)except:
print
("我知道有錯誤,但是不用指出錯誤型別"
)exit()
finally
:print
("我 fo 了"
)
輸出:
請輸入number:0
我知道有錯誤,但是不用指出錯誤型別
我 fo 了
案例2:簡單異常案例
給出異常資訊
try
: num =
int(
input
("請輸入number:"))
rst =
100/num
print
("計算結果是: "
.format
(rst)
) # 捕獲異常後,把異常例項化,出息資訊會在例項裡
# 注意以下寫法
# 以下語句是捕獲zerodivisionerror異常並例項化例項e
except zerodivisionerror as e:
print
("我知道有錯誤,但是不用指出錯誤型別"
)print
(e)print
(type
(e))
exit()
finally
:print
("我 fo 了"
)
輸出:
請輸入number:0
我知道有錯誤,那我報個錯
division by zero
我 fo 了
案例3:多種異常案例
如果是多種error的情況
需要把越具體的錯誤,越往前放
在異常類繼承關係中,越是子類的異常,越要往前放,
越是父親類的異常,越要往後
在處理異常的時候,一旦攔截到某乙個異常,則不在繼續往下檢視,直接進行下乙個**,即有finally則執行finally語句塊,否則就執行下乙個大的語句
try
: num =
int(
input
("請輸入number:"
))
rst =
100/ num
pint
("計算結果是: "
.format
(rst)
)except zerodivisionerror as e:
print
("輸入出現錯誤"
)print
(e) # exit是退出程式的意思
exit()
except nameerror as e:
print
("名字起錯了"
)print
(e)except attributeerror as e:
print
("好像屬性有問題"
)print
(e)exit()
# 所有異常都是繼承自exception
# 如果寫上下面這句話,任何異常都會攔截住
# 而且,下面這句話一定是最後乙個exception
except exception as e:
print
("我也不知道就出錯了"
)print
(e)except valueerror as e:
print
("no>>>>>>>>>>>>>>>>>>"
)print
("無論怎樣我都會執行"
)
輸出0:
請輸入number:0
輸入出現錯誤
division by zero
輸出1:
請輸入number:1
名字起錯了
name 'pint' is not defined
無論怎樣我都會執行
使用者手動引發異常
當某些情況,使用者希望自己引發乙個異常的時候,可以使用 raise 關鍵字來引發異常
案例4:raise異常案例
try
:print
("測試輸出"
)print
(3.1415926
) # 手動引發乙個異常
# 注意語法: raise errorclassname
raise valueerror
print
("程式沒有完結"
)except nameerror as e:
print
("nameerror"
)except valueerror as e:
print
("valueerror"
)except exception as e:
print
("有異常"
)finally
:print
("我肯定會被執行的"
)
輸出:
測試輸出
3.1415926
valueerror
我肯定會被執行的
案例5:raise異常案例2-自定義異常
# 需要注意: 自定義異常必須是系統異常的子類
class
anqiaovalueerror
(valueerror)
: pass
try:
print
("測試輸出"
)print
(3.1415926
) # 手動引發乙個異常
# 注意語法: raise errorclassname
raise anqiaovalueerror
print
("程式沒有完結"
)except nameerror as e:
print
("nameerror"
)except valueerror as e:
print
("valueerror"
)except exception as e:
print
("有異常"
)finally
:print
("我肯定會被執行的"
)
輸出:
測試輸出
3.1415926
valueerror
我肯定會被執行的
案例6:else異常案例
# else語句案例
try:
num =
int(
input
("請輸入 number:"))
rst =
100/ num
print
("計算結果是: "
.format
(rst)
)except exception as e:
print
("exception"
)else
:print
("no exception"
)finally
:print
("反正我會被執行"
)
輸出0:
請輸入 number:0
exception
反正我會被執行
輸出1:
請輸入 number:1
計算結果是: 100.0
no exception
反正我會被執行
python異常處理 Python 異常處理
使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...
python異常舉例 Python異常處理
1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...
python異常處理
當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...