為什麼會出現異常:
1) 程式出錯了,1/0、變數沒定義等
2) 使用者輸入的資料問題
def add(a,b):
return a+b
a=input("a:") #輸入hello
b=input("b:") #輸入100
print(add(a,int(b))) #str型別和int型別相加的異常
3) 執行中,效能的問題。記憶體洩漏、控制代碼洩露。
異常:當異常出現的時候,且沒有做任何處理,程式不會繼續執行,也就是程式被中斷了。
服務端程式:出現異常沒有捕獲,程式就中斷了
捕獲異常是為了讓程式出現異常的時候仍然能繼續執行下去而不會中斷。
異常捕獲的應用場景:
1 可能程式出錯的地方
2 異常處理使用者可能輸入的錯誤資料
3 異常處理可能出現的系統(io)的錯誤
4 異常處理可能出現的網路的錯誤
異常資訊有啥用:
出錯的**行號
異常型別:+具體的資訊說明
捕獲異常的例子:
try:
1/0except zerodivisionerror:
print("除0的錯誤出現了!")
except:
print("有未知錯誤")
finally:
pass
try不可以單獨存在,必須有except,或者finally
except zerodivisionerror:出現除0的時候,會被這裡捕獲,執行下面的print(「除0的錯誤出現了!」)
如果前面具體的異常都沒有捕獲到,會執行except:下的語句,相當於預設值,保證所有的異常都能被處理,不會導致程式中斷。
finally:無論前面的try-except的執行結果怎樣,最終都會執行finally:下的語句,通常finally都是用於釋放一些資源。
編譯過程錯誤:語法錯誤、縮排錯誤不會被except攔截
養成乙個習慣:
1)把異常的資訊搞明白什麼意思
2)出錯的**在哪一行,具體的**是啥。具體分析。
except後面沒有具體異常的要放最後面,否則會報錯
try:
1/0except:
print("有未知錯誤")
except zerodivisionerror:
print("除0的錯誤出現了!")
print("除0的錯誤出現了!")
except:
print("有未知錯誤")
try-else
沒有執行except才執行else
else:在try執行完所有內部的**後,沒有異常的情況下才會被執行。有異常,則不會被執行
try:
1/1except zerodivisionerror as f:
print("除0的錯誤出現了!")
print(f)
print(traceback.print_exc())
except:
print("未知異常!")
else:
print("沒有出現錯誤!")
通常finally都是用於釋放一些資源
try:
1/1except zerodivisionerror as f:
print("除0的錯誤出現了!")
print(f)
print(traceback.print_exc())
except:
print("未知異常!")
else:
print("沒有出現錯誤!")
finally:
print("無論如何我都會被執行!")
import traceback
try:
raise zerodivisionerror
except zerodivisionerror as f:
print("除0的錯誤出現了!")
print(f)
print(traceback.print_exc())
except nameerror:
print("nameerror異常!")
else:
print("沒有出現錯誤!")
finally:
print("無論如何我都會被執行!")
自定義異常
class networkerror(runtimeerror):
# 重寫預設的__init__()方法,
# 丟擲特定的異常資訊
def __init__(self, value):
self.value = value
觸發自定義的異常
斷言:期望的結果和實際的結果做比對
try:
assert 1==2
except:
print("斷言異常")
斷言異常
python之異常處理 Python之異常處理
異常物件 請大家執行如下 a 100 0 print a 就會發現直譯器顯示如下的錯誤提示 traceback most recent call last file x.py line 1,in a 100 0 zerodivisionerror division by zero 大家要學會看直譯器...
Python之異常處理
在程式執行過程中影響程式正常執行的內容,稱為異常 nameerror print a indexerror 索引錯誤 li 1,2,3,4 print li 8 keyerror d dict a 1,b 2 print d f zerodivisionerror 除0錯誤 print 10 2 2...
Python之異常處理
try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 exce...