調試測試
1、錯誤處理
1.1、try
- python內置了一套try機制。若except後存在finally語句塊,則執行except之後會執行finally。
- 不同的錯誤可以用多個except來捕獲。存在Exception。
- 可以跨越多層調用,最底層出錯,只要某個上層捕獲到了,就可以處理。不需要在每個可能出錯的地方去捕獲錯誤,只要在合適的層次去捕獲錯誤就可以了。
1.2、調用棧
- 如果沒有錯誤被捕獲,就會一直往上拋,最後被Python解釋器捕獲,打印一個錯誤信息,然後程序退出。
- 可視作java的報錯信息。
1.3、記錄錯誤
- 可以使用內置的logging模塊記錄錯誤信息。ex: logging.exception(e).
1.4、拋出錯誤
- 用raise語句拋出一個錯誤信息,捕獲一個錯誤就是捕獲到該class的一個實例。只有在有必要時才定義錯誤類型,定義的時候儘量選擇內置的錯誤類型ValueError、TypeError。
- raise如果不帶參數,就會把當前錯誤原樣拋出。
2、調試
- 可以直接用print()打印出來;
- 使用斷言,凡是用print()的地方,都可以用assert來替代;也需要刪除。
- 使用logging,添加logging.basicConfig(level=logging.INFO)就能看到所有輸出了。
- 使用pdb,使程序以單步方式運行,可以隨時查看運行狀態。eg: python -m pdb ex1.py。l代表下一段,n代表單步執行代碼,p查看變量,q結束調試。
- 使用pdb.set_trace(),需要import pdb,然後在可能出錯的地方放一個pdb.set_trace(),就可以設置斷點了。命令c繼續執行。