python中的異常處理

2021-10-04 20:23:23 字數 3694 閱讀 9463

異常就是不正常的情況,就是在程式執行的過程中,出現的導致程式執行不正常的一些可控的情況。不可控的情況叫做錯誤(比如電腦沒有記憶體導致程式出錯),錯誤和bug都是補充正常的情況,注意這裡的紅字的標記的文字,錯誤和bug都是補充正常的情況

異常產生的後果就是:引發程式的崩潰

處理異常(容錯),包容出現的不正常的錯誤,保證程式的正常執行,主要為了提高軟體的容錯能力,**能夠繼續向後執行,而不會崩潰

處理異常的方式:

1,try-except:異常捕獲處理

try:

#有可能觸發異常的**,不要把所有**放到這裡

#這裡的**如果不觸發異常,這裡的**就會正常執行

except:

#捕獲異常後執行的**或者是需要修正的**

目的:主要為了提高軟體的容錯能力,**能夠繼續向後執行,而不會崩潰

try:

num = int(input("請輸入乙個數")) # 因為int()這個全域性函式只能將字元轉為數值,如果是文字將會報錯

# 遇到錯誤將會跳到except:這個塊中,以保證後面**的正常執行

except:

print("發現了問題")

print("程式執行結束")

修正後的**展示

try:

num = int(input("請輸入乙個數")) # 因為int()這個全域性函式只能將字元轉為數值,如果是文字將會報錯

# 遇到錯誤將會跳到except:這個塊中,以保證後面**的正常執行

result= num+10

except:

print("發現了問題")

num=int(input("請輸入乙個數")) # 修正的**

result = num+10 # 修正的**

print("{}+10={}".format(num,result))

print("程式執行結束")

執行 的結果

上面的**有缺陷就是,捕獲的異常是乙個空異常,所以需要定義乙個exception

try:

num = int(input("請輸入乙個數")) # 因為int()這個全域性函式只能將字元轉為數值,如果是文字將會報錯

# 遇到錯誤將會跳到except:這個塊中,以保證後面**的正常執行

except exception as e:

print("發現了問題")

print("異常的資訊是:",e)

print("程式執行結束")

通過內建模組如何檢視python中的異常體系

|常見異常(valueerror、keyerror、keyboardinterrupt、arithmeticerror)

try:

# 將有可能觸發異常的**

except *** as e:

print("處理***異常")

except ***x as e:

print("處理***x異常")

except exception as e:

print("使用多型將其他異常一網打盡")

# 在python中,很多塊級作用域(for,if等等),都有這個else

else:

print("try自始至終沒有出現異常時執行的**"),**展示如下

try:

num = int(input("請輸入乙個數")) # 因為int()這個全域性函式只能將字元轉為數值,如果是文字將會報錯

# 遇到錯誤將會跳到except:這個塊中,以保證後面**的正常執行

except exception as e:

print("發現了問題")

print("異常的資訊是:",e)

else:

print("try中自始至終沒有出現過異常,才會去執行else裡面的內容")

print("程式執行結束")

try:

pass

except keyboardinterrupt:

pass

except blockingioerror:

pass

except eoferror:

pass

except exception:

# 第二種多個異常處理的寫法(不推薦,認識就可以了)

try:

pass

except (keyboardinterrupt, keyerror, valueerror, environmenterror) as e:

print("出現了異常")

try:    

# 有可能出現異常的**

except ***:

print("處理異常")

...else:

print("沒有異常時執行的")

finally:

# 表示最後要執行的**

# 必須要執行的**

# 不管有沒有異常出現,必須要執行的

# 一般會將必須要執行的**,如資源的釋放,鏈結的是關閉等等

函式中:如果在return後面存在finally,那麼**並不會直接返回,而是需要先執行

finally**,之後才會返回,看下**

def demo(res):

try:

num = int(res) # 因為int()這個全域性函式只能將字元轉為數值,如果是文字將會報錯

# 遇到錯誤將會跳到except:這個塊中,以保證後面**的正常執行

return "a"

except exception as e:

print("發現了問題")

print("異常的資訊是:", e)

return "b"

else:

print("try中自始至終沒有出現過異常,才會去執行else裡面的內容")

finally:

print("不管程式是夠有異常,都是必須要執行的")

return "c"

print("程式執行結束")

return "d"

if __name__ == '__main__':

res= input("請輸入乙個數")

print(demo(res))

這是執行的結果

python 中的異常處理

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...

Python中的異常處理

當python檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的 異常 看如下示例 try print test1 open 123.txt r print test2 except ioerror pass此時可以正常執行,執行結果為 test1 說明 try exc...

python中的異常處理

python使用異常物件來表示異常狀態,並在遇到錯誤時引發異常,異常物件未被處理時,程式將終止並顯示一條錯誤資訊。raise語句 自定義異常類 class somecustomexception exception pass class myexceptionclass exception def ...