一、異常處理
在程式執行過程中,總會遇到各種各樣的錯誤。程式一出錯就停止執行了,那我們不能讓程式停止執行吧,這時候就需要捕捉異常了,通過捕捉到的異常,我們再去做對應的處理。
下面我們先寫乙個函式,實現除法運算。12
3456
78910
11defcalc(a,b):
returna/b
print(calc(5,1))#呼叫,沒有錯誤,結果是5.0
>>>5.0
print(calc(5,0))#再次呼叫,這時候就不對了,因為被除數不能為0,下面報了一堆錯,程式停止執行了
>>>zerodivisionerror:division by zero
這個時候我們就需要捕捉異常了,如果除數是0的話,就提示使用者傳入的引數不對,重新傳入。
捕捉異常使用try....except....關鍵字,就是你在寫**的時候,先要考慮到這段**可能會出現什麼樣的錯誤,然後做對應的處理,try裡面就是包含你做處理的**,except裡面就是出了某種錯誤的時候,我怎麼去處理,下面我們改下**,捕捉異常。12
3456
78910
1112
13defcalc(a,b):
try:
res=a/b
exceptzerodivisionerrorase:#如果是除數為0的錯誤,就返回除數不能為0,這個as e代表把返回錯誤的資訊賦給e
return'除數不能為0!'
returnres#這個是如果沒有這個異常的話,就返回結果
print(calc(5,0))#這樣再呼叫就不會出來錯誤了,就返回除數不能為0這個了。
上面就是捕捉異常,當然上面的只能捕捉到除數為0的錯誤,如果有別的錯誤就捕捉不到了;還有乙個finally的用法,就是不管出不出異常都執行;try還有乙個可以捕捉所有異常,還有else的用法,就是沒出異常的時候怎麼辦,下面用**來解釋。12
3456
78910
1112
1314
1516
1718
1920
21defcalc(a,b):
try:# 捕捉異常
res=a/b
exceptzerodivisionerrorase:
return'除數不能為0!'
exceptkeyerrorase:# 捕捉keyerror這個異常,當然這段**沒用到字典,所以不會有keyerror這個錯誤,我只是舉個例子
return'keyerror錯誤'
exceptexceptionase:# 這個是捕捉所有的異常,不管你有什麼異常都可以捕捉到
print('其他異常')
returne#返回錯誤資訊
else:#這個else和上面的try對應的,也就是不出異常的話走這裡
print('沒有出異常')
returnres
finally:#這個finally是不管這個段**有沒有出異常都走它
print('出沒出異常都走我這裡')
print(calc(5,0))#出除數異常了,會返回除數不能為0!和執行finally裡面的**
print(calc(5,1))#這個沒有出異常,就會走else裡面的東西,返回結果,也會執行執行finally裡面的**
print(calc(5,'s'))#這個也走異常了,除數是字串,肯定不能除,就走那個捕捉所有異常的**了,也會執行執行finally裡面的**
二、常見的一些異常資訊:12
3456
78910
1112
1314
1516
1718
1920
2122
23attributeerror:試圖訪問乙個物件沒有的屬性,比如foo.x,但是foo沒有屬性x
ioerror:輸入/輸出異常,一般是無法開啟檔案
importerror:無法匯入模組或包,一般是路徑問題或名稱錯誤
indentationerror:**沒有正確對齊,屬於語法錯誤
indexerror:下標索引超出序列邊界,比如x只有三個元素,卻試圖訪問x[3]
keyerror:試圖訪問字典裡不存在的鍵
keyboardinterrupt:ctrl+c被按下
nameerror:使用乙個還未被賦予物件的變數
syntaxerror:語法錯誤
typeerror:傳入物件型別與要求的不符
unboundlocalerror:試圖訪問乙個還未被設定的區域性變數,一般是由於在**塊外部還有另乙個同名變數
valueerror:傳入乙個呼叫者不期望的值,即使值的型別是正確的
三、主動丟擲異常
主動丟擲異常,就是我們在**裡面讓它自動丟擲乙個異常,然後捕捉到,比如說我們在寫自動化測試指令碼的時候,結果和預期不符合,就可以主動丟擲乙個異常資訊,然後捕捉到,做其他的處理,主動丟擲異常使用raise關鍵字。12
3456
7try:
raisekeyerror#主動丟擲乙個keyerror的異常
exceptkeyerrorase:
print('這個是我主動丟擲的異常')
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...