①try...except...finally...
的錯誤處理機制
try
:print
('try...'
) r =10/
0print
('result:'
, r)
except zerodivisionerror as e:
print
('except:'
, e)
finally
:print
('finally...'
)
當有zerodivisionerror
錯誤時跳轉到錯誤**並指示,不執行except之後語句,會執行finally語句(可無)。
②同時可加else試錯:
try
:print
('try...'
) r =10/
int(
'2')
print
('result:'
, r)
except valueerror as e:
print
('valueerror:'
, e)
except zerodivisionerror as e:
print
('zerodivisionerror:'
, e)
else
:print
('no error!'
)finally
:print
('finally...'
)print
('end'
)
def
foo(s)
:return10/
int(s)
defbar
(s):
return foo(s)*2
defmain()
:try
: bar(
'0')
except exception as e:
print
('error:'
, e)
finally
:print
('finally...'
)
⑤錯誤資訊分析:根據traceback
資訊從上到下,最終錯誤在底行
⑥記錄錯誤:如果不捕獲錯誤,自然可以讓python直譯器來列印出錯誤堆疊,但程式也被結束了。既然我們能捕獲錯誤,就可以把錯誤堆疊列印出來,然後分析錯誤原因,同時,讓程式繼續執行下去。
python內建的logging模組可以非常容易地記錄錯誤資訊:
# err_logging.py
import logging
deffoo
(s):
return10/
int(s)
defbar
(s):
return foo(s)*2
defmain()
:try
: bar(
'0')
except exception as e:
logging.exception(e)
main(
)print
('end'
)
同樣是出錯,但程式列印完錯誤資訊後會繼續執行,並正常退出:
$ python3 err_logging.py
error:root:division by zero
traceback (most recent call last)
: file "err_logging.py"
, line 13
,in main
bar(
'0')
file "err_logging.py"
, line 9
,in bar
return foo(s)*2
file "err_logging.py"
, line 6
,in foo
return10/
int(s)
zerodivisionerror: division by zero
end
①print()
列印變數,但是麻煩。
②斷言(assert
):當assert
後面表示式為true時執行n is zero!
,並列印assertionerror
資訊:
def
foo(s)
: n =
int(s)
assert n !=0,
'n is zero!'
return
10/ n
defmain()
: foo(
'0')
③logging
:它允許你指定記錄資訊的級別,有debug,info,warning,error
等幾個級別。指定其中乙個則其餘不顯示:
import logging
logging.basicconfig(level=logging.info)
s ='0'
n =int
(s)logging.info(
'n = %d'
% n)
print(10
/ n)
④pdb
:單步除錯
⑤pdb.set_trace()
:最實用
需要import pdb
,然後,在可能出錯的地方放乙個pdb.set_trace()
,就可以設定乙個斷點:
# err.py
import pdb
s ='0'
n =int
(s)pdb.set_trace(
)# 執行到這裡會自動暫停
print(10
/ n)
執行**,程式會自動在pdb.set_trace(
)暫停並進入pdb
除錯環境,可以用命令p檢視變數,或者用命令c繼續執行:
$ python err.py
>
/users/michael/github/learn-python3/samples/debug/err.py(7)
()->
print(10
/ n)
(pdb) p n
0(pdb) c
traceback (most recent call last)
: file "err.py"
, line 7,in
print(10
/ n)
zerodivisionerror: division by zero
⑥以上五點為程式設定,ide可斷點除錯 Python錯誤處理和除錯
錯誤處理 try.except.finally.try print try.r 10 0 print result r except zerodivisionerror as e print except e finally print finally.print end try.except di...
php中錯誤處理及除錯
1 在php中,錯誤用於指出語法 環境或程式設計問題。根據錯誤出現在程式設計過程中的不同環節,大致可以分為以下4類 1 語法錯誤 2 執行錯誤 3 邏輯錯誤 4 環境錯誤 2 錯誤級別 php中的每個錯誤都有乙個錯誤級別與之關聯,用於表示當前錯誤的等級。例如error warning notice等...
除錯和錯誤處理
1.除錯模式下執行 f5 非除錯模式下執行 ctrl f5 2.計算機的debug目錄下,有.pdb檔案,它們可以執行很多操作 向ide輸出除錯資訊 在執行應用程式期間檢視和編輯變數的值 暫停程式和重啟程式 在 的某個位置自動暫停程式的執行 一次執行程式中的一行 在應用程式的執行期間監視變數內容的變...