python異常處理

2022-07-23 06:48:14 字數 2545 閱讀 5517

一、異常處理

在程式執行過程中,總會遇到各種各樣的錯誤。程式一出錯就停止執行了,那我們不能讓程式停止執行吧,這時候就需要捕捉異常了,通過捕捉到的異常,我們再去做對應的處理。

下面我們先寫乙個函式,實現除法運算。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...