Python 錯誤處理及除錯

2021-10-25 09:38:05 字數 3602 閱讀 9557

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輸出除錯資訊 在執行應用程式期間檢視和編輯變數的值 暫停程式和重啟程式 在 的某個位置自動暫停程式的執行 一次執行程式中的一行 在應用程式的執行期間監視變數內容的變...