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...