在專案開發中,錯誤處理是不可或缺的。錯誤處理幫助人們debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。錯誤處理還可以提高程式的容錯性。
我們之前在講迴圈物件的時候,曾提到乙個stopiteration的錯誤,該錯誤是在迴圈物件窮盡所有元素時的報錯。
我們以它為例,來說明基本的錯誤處理。
乙個包含錯誤的程式:
re = iter(range(5))首先,我們定義了乙個迴圈物件re,該迴圈物件將進行5次迴圈,每次使用序列的乙個元素。for i in range(100):
re.next()
'hahahaha
'
在隨後的for迴圈中,我們手工呼叫next()函式。當迴圈進行到第6次的時候,re.next()不會再返回元素,而是舉出(raise)stopiteration的錯誤。整個程式將會中斷。
我們可以修改以上錯誤程式,直到完美的沒有bug。但另一方面,如果我們在寫程式的時候,知道這裡可能犯錯以及可能的犯錯型別,我們可以針對該錯誤型別定義好」應急預案「。
re = iter(range(5))在try程式段中,我們放入容易犯錯的部分。我們可以跟上except,來說明如果在try部分的語句發生stopiteration時,程式該做的事情。如果沒有發生錯誤,則except部分被跳過。try:
for i in range(100):
re.next()
except
stopiteration:
'here is end ',i
'hahahaha
'
隨後,程式將繼續執行,而不是徹底中斷。
完整的語法結構如下:
tryelse是指所有其它的錯誤。finally是無論何種情況,最後都要做的一些事情。流程如下,try->except/else->finally: ...
except
error1:
...except
error2:
...else
: ...
finally
: ...
我們也可以自己寫乙個舉出錯誤的例子:
'lalala
'raise
stopiteration
'hahaha
'
stopiteration是乙個類。當我們raise它的時候,有乙個中間環節,就是python利用stopiteration生成乙個該類的乙個物件。python實際上舉出的,是這乙個物件。當然,也可以直接寫成:
raise stopiteration()總結:
try: ... except error: ... else: ... finally: ...
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...