參考資料:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832254674584228cd773d4db5a02ab85d2db4f83e000
https://blog.csdn.net/u013378306/article/details/70146102
1、捕獲錯誤
Python使用try ...except...finally的方式捕獲錯誤。下面的話摘自參考資料:
當我們認爲某些代碼可能會出錯時,就可以用try
來運行這段代碼,如果執行出錯,則後續代碼不會繼續執行,而是直接跳轉至錯誤處理代碼,即except
語句塊,執行完except
後,如果有finally
語句塊,則執行finally
語句塊,至此,執行完畢。Python的錯誤其實也是class,所有的錯誤類型都繼承自BaseException
,所以在使用except
時需要注意的是,它不但捕獲該類型的錯誤,還把其子類也“一網打盡”。點擊這裏可查看Python定義的錯誤類型。2、錯誤處理在except語句塊內捕獲錯誤後,對錯誤的處理方式包括:
(1)使用print語句將錯誤輸出,繼續執行後面的程序。
(2)使用logging函數輸出日誌,繼續執行後面的程序。使用logging函數前,需要調用logging.basicConfig對日誌記錄參數進行配置,詳細配置方式可參考參考資料2。
(3)使用raise將異常拋出。語法格式爲:raise 錯誤類型實例,這裏的錯誤類型可以與捕獲的錯誤類型不一致。
3、調試模式
廖老師語錄:程序能一次寫完並正常運行的概率很小,基本不超過1%。在可能出錯的地方,可以通過以下3中手段輔助調試程序:(1)直接使用print語句將需要查看的信息輸出。(2)使用assert(斷言):斷言捕獲到符合條件的錯誤時,在按照斷言定義輸出指定信息的同時拋出AssertionError。(3)使用logging(日誌)(4)進入調試模式:調用pdb.set_trace進入調試模式。調試模式下常見的命令包括: l:查看代碼 n:單步執行 c:繼續運行 q:結束運行 p [變量名]:查看變量值注:支持python的集成開發環境都集成了單步調試模式,可以直接在IDE的代碼編輯器內設置斷點。下面給出我的學習代碼:
import logging
import pdb
#配置日誌格式
logging.basicConfig(level=logging.INFO, filename='log.txt', format='%(asctime)s day7[line:%(lineno)d]:%(message)s')
#定義一個函數,用於調試
def test():
#接收用戶輸入
m = raw_input("input an integer:")
#設置斷點,進入單步調式模式 pdb.set_trace()
try:
print 'try'
#使用斷言調試程序
assert isinstance(m, int), logging.info('invalid input')
mm = int(m)
assert mm != 0, 'input cannot be zero'
n = 10 / mm
print n
except BaseException, e:
raise
#logging.exception(e)
#print e.message
finally:
print 'finally'
print 'END'
test()
今天就學習到這裏啦,下一節從測試開始學習。