目錄定義
異常型別
異常捕獲方法
1)try…except…
2)try…except…finally…
3)try…except…else…
觸發異常
1.定義
程式如果遇到異常後不會再執行後面的語句,但不能讓程式遇到異常就終止執行。
改變程式碰到異常就終止的行為叫異常處理,異常的捕獲,處理異常儲存到資料庫、日誌等
2.異常型別
1)indexerror
2)zerodivisionerror
3)valueerror
…3.異常捕獲方法
1)try…except…
try
:#要執行的可能發生異常的**
except
:#程式發生異常以後,希望程式做的事情
a. 不填寫:捕獲所有異常(但無法獲取異常資訊),有任何錯誤就執行 except 子語句2
try
:print
("正在執行程式"
) a =1/
0#除數不能為0,有報錯
print
(f"計算結果:"
)#try中的報錯語句後面的**不會再執行
except
:#不填寫異常型別
print
("我知道 1 不能 / 0 , 你需要改除數"
)#執行except中的語句
print
("剩下的程式"
)#會執行
b.單個異常型別:當且僅當出現這個指定的異常型別時才會執行 except 的子語句2
# 捕獲具體的異常型別
try:
print
("正在執行程式"
) a =1/
0#除數不能為0的異常型別是:zerodivisionerror
print
(f"計算結果:"
)except zerodivisionerror:
#在except後面加上這個異常型別zerodivisionerror
print
("我知道 1 不能 / 0 , 你需要改除數"
)print
("剩下的程式"
)
注意: 如果實際發生的異常型別沒有寫入的話,仍然會出現程式終止的情況,所以要盡可能寫入完善的異常型別b.補充:展示異常資訊
# 展示異常資訊
try:
print
("正在執行程式"
) a =1/
0print
(f"計算結果:"
)except zerodivisionerror as e:
print
(e)#將異常的具體資訊列印出來:division by zero
print
("剩下的程式"
)
c.多個異常型別:出現所列的任意乙個異常的時候,執行對應 except 的語句
#捕獲多個具體的異常型別
try:
['age'
]#字典key值錯誤:keyerror
lst =
['pz'
,'yj'
] lst[3]
#列表取值超出索引值:indexerror
a =1/
0except
(zerodivisionerror, indexerror, keyerror)
as e:
# try中遇到異常就會停止執行後面的**,直接跳到except,所以只會展示遇到的異常型別的資訊
print
(e)#keyerror的異常資訊:'age'
print
("hello world"
)
try:[
'age'
] lst =
['pz'
,'yj'
] lst[3]
a =1/
0except zerodivisionerror as e:
print
(e)print
("hello world"
)except indexerror:
print
("index error"
)except keyerror:
print
("key error"
)
注意:這兩種方法具體用哪種,就看要不要對異常做統一處理(方法1)d.某種異常:這種異常下的所有型別錯誤都能**獲,只要出現錯誤,就執行 except 子語句
try:
(縮排)子語句1
except exception as e:
(縮排)print(e)
子語句2
try:1
/0except exception as e:
print
(f"全能警察:"
)
注意:d和a的區別在於,exception既能捕獲該基類下的所有異常又能展示異常資訊;而不填寫異常型別只能捕獲所有異常,不能展示異常資訊2)try…except…finally…
try
:#要執行的可能發生異常的**
except 異常型別:
#程式發生異常以後,希望程式做的事情
finally
:#報錯與否都會執行的**
import io #有關輸入輸出,要匯入io模組(內建)
try:
f =open
('demo.py'
,'a'
) f.read(
)#mode=a,無法read,報錯io.unsupportedoperation
except io.unsupportedoperation as e:
print
("檔案讀取失敗"
)finally
: f.close(
)#檔案開啟後不論有無報錯,都要關閉檔案
3)try…except…else…
try
:#要執行的可能發生異常的**
except 異常:
#程式發生異常以後,希望程式做的事情
else
:#try語句不報錯才會執行的**
3.觸發異常
注意:異常型別是exception標準型別中的任意乙個型別(例如:nameerror)
#自定義異常型別、異常資訊
defadult_add
(a, b)
:"""兩個數相加,a, b 一定要大於 18, 否則就不能執行"""
if(a <18)
or(b <18)
:raise valueerror(
"引數必須大於18"
) c = a + b
return c
#直接呼叫函式並遇到該異常時,會報出異常
add(3,
6)#用異常捕獲可以成功捕獲
try:
adult_add(3,
4)except
:print
("函式執行完成。"
)
python自動化測試
為了讓單元測試 能夠被測試和維護人員更容易地理解,最好的解決辦法是讓開發人員遵循一定的規範來編寫用於測試的 具體到python程式設計師來講,則是要採用pyunit這一自動測試框架來構造單元測試用例。目前pyunit已經得到了大多數python開發人員的認可,成了事實上的單元測試標準。1.要被測試的...
python自動化測試
0 寫在前面 專案都快搞完了,感覺還是一堆的bug,人工測試還是不靠譜 意識到測試的重要性,學習下自動化測試 1 相關庫 unittest python自帶的自動化測試庫 htmltestrunner 用於生成報告 一些坑 瀏覽器和driver的版本必須一致,否則起不來 必須要通過命令列的方式執行指...
自動化測試 web自動化測試
自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...