1.錯誤處理
1)try...except...finally
try:
print('
try...')
r = 10 / int('a'
)
print('
result:
', r)
except
valueerror as e:
print('
valueerror:
', e)
except
zerodivisionerror as e:
print('
zerodivisionerror:
', e)
finally
:
print('
finally...')
print('
end')
2)出錯的時候,一定要分析錯誤的呼叫棧資訊,才能定位錯誤的位置。
3)python內建的logging
模組可以非常容易地記錄錯誤資訊
4)raise丟擲錯誤例項
#err_raise.py
class
fooerror(valueerror):
pass
deffoo(s):
n =int(s)
if n==0:
raise fooerror('
invalid value: %s
' %s)
return 10 /n
foo('0
')
2.除錯
1)print
2)assert
3)logging
和assert相比,不會丟擲錯誤,且可以輸出到檔案
importlogging
s = '0'
n =int(s)
logging.info(
'n = %d
' %n)
print(10 / n)
importlogging
logging.basicconfig(level=logging.info)
這就是logging
的好處,它允許你指定記錄資訊的級別,有debug
,info
,warning
,error
等幾個級別,當我們指定level=info
時,logging.debug
就不起作用了。同理,指定level=warning
後,debug
和info
就不起作用了。
4)pdb
讓程式以單步方式執行,隨時檢視執行狀態
5)pdb.set_trace()
這個方法也是用pdb,但是不需要單步執行,我們只需要import pdb
,然後,在可能出錯的地方放乙個pdb.set_trace()
,就可以設定乙個斷點
#err.py
import
pdbs = '0'
n =int(s)
pdb.set_trace()
#執行到這裡會自動暫停
print(10 / n)
3)單元測試
對乙個模組、乙個函式、乙個類進行正確性檢驗的過程
setup和teardown
4)文件測試
doctest非常有用,不但可以用來測試,還可以直接作為示例**。通過某些文件生成工具,就可以自動把包含doctest的注釋提取出來。使用者看文件的時候,同時也看到了doctest。
python錯誤 除錯和測試
錯誤 除錯和測試 當我們認為某些 可能會出錯時,就可以用try來執行這段 如果執行出錯,則後續 不會繼續執行,而是直接跳轉至錯誤處理 即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。出錯的時候,一定要分析錯誤的呼叫棧資訊,才能定位錯...
python之錯誤 除錯和測試
try print try.r 10 0 print result r except zerodivisionerror,e print except e finally print finally.print end 如果不捕獲錯誤,自然可以讓python的直譯器來列印出錯誤堆疊,但程式也同時結束...
錯誤 除錯和測試
在程式執行過程中,總會遇到各種各樣的錯誤。有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字串,這種錯誤我們通常稱之為bug,bug是必須修復的。有的錯誤是使用者輸入造成的,比如讓使用者輸入email位址,結果得到乙個空字串,這種錯誤可以通過檢查使用者輸入來做相應的處理。還有一類錯誤是...