python中異常棧跟蹤與異常利用
- 2019 年 10 月 6 日
- 筆記
知識回顧:
異常類型結構:
try:
pass
except:
pass
else:
pass
finally:
pass
異常中,必須要有的try關鍵詞,後接上except或者else
本節知識影片教程
以下開始文字講解:
一、異常棧的跟蹤
棧的特點:先進後出
異常的拋出,如果內部的異常沒有被進行處理,那麼會從最內部一個慢慢往外部傳遞異常。
如果內部的異常已經被捕獲且處理,那麼內部的異常就不會進行傳遞了。
二、異常利用
我們在使用字典的時候,往往可能會出現調用的字典的關鍵詞並不存在的情況,那麼直接就會報錯了。我們以前會使用if語句進行處理,來判斷每一個關鍵詞在調用之前,是否存在的判斷。
注意:python中大小寫是敏感的,要注意調用的時候,大小寫的正確性。
1.判斷鍵是否存在
原有判斷字典鍵值的方式,防止程式異常
#調用字典輸出,直接使用if語句進行判斷
if "aa" in dic1:
print(dic1["aa"])
else:
print("關鍵詞不存在")
利用異常捕獲,來簡化程式碼。
try:
print(dic1["aa"])
print(dic1["BB"])
except KeyError:
print("關鍵詞不存在,拋出異常")
2.判斷類方法是否存在
類的異常利用,老的模式下的類的屬性是否存在的判斷
mc=MyClass()
if(hasattr(MyClass,"abc")):
mc.abc()
else:
print("屬性不存在")
新式的類屬性調用的判斷
採用異常捕獲的情況來進行
try:
mc.abc()
mc.defd()
except:
print("屬性方法不存在")
三、總結強調
1.掌握異常棧的跟蹤。
2.掌握異常的利用,來優化程式碼,排除未知異常。
3.掌握try捕獲異常的基本形式。
4.所有異常捕獲後,拋出的異常,都是異常對象。