菜鳥學Python 錯誤處理

2021-08-30 02:15:29 字數 1151 閱讀 2275

python內建了一套錯誤處理機制

def

foo(s)

:return10/

int(s)

defbar

(s):

return foo(s)*2

defmain()

:try

: bar(

'0')

except exceptions as e:

print

('error:'

, e)

finally

:print

('...'

)

此機制可以跨越多層呼叫,在合適的層次捕獲錯誤就可以了。

出錯要分析呼叫棧的資訊,找到源頭

使用python內建的logging

將上述**except語句下面改為

import logging..

.try:.

..except..

.as..

.:logging.exception(e)

main(

)print

('end'

)

logging可以記錄錯誤

用raise語句

丟擲乙個例項的錯誤

def

foo(s)

: n =

int(s)

if n ==0:

raise valueerroe

return

10/ n

defbar()

:try

: foo(0)

except valueerror as e:

print

('valueerror'

)raise

#raise 語句不帶引數就會把錯誤原樣丟擲

bar(

)

此外

try:

10/ nexcept zerodivisionerror:

raise valueerror(

'input error'

)

在except中raise乙個error,可以轉換錯誤型別。

Python 錯誤處理

當我們認為某些 可能會出錯時,就可以用try來執行這段 如果執行出錯,則後續 不會繼續執行,而是直接跳轉至錯誤處理 即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。例 a b traceback most recent call l...

Python編碼錯誤處理

在將字串寫入檔案時,執行f.write str 後台總是報錯 unicodeencodeerror ascii codec can t encode character u u6211 in position 0 ordinal not in range 128 即ascii碼無法被轉換成unico...

python 錯誤處理 assert

assert是斷言的意思,解釋為 我斷定這個程式執行之後或者之前會有這樣的結果,如果不是,那就扔出乙個錯誤。語法 assert expression arguments assert 表示式 引數 舉例 def foo s n int s assert n 0,n is zero return 10...