異常就是不正常的情況,就是在程式執行的過程中,出現的導致程式執行不正常的一些可控的情況。不可控的情況叫做錯誤(比如電腦沒有記憶體導致程式出錯),錯誤和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 ...