Python高階08 錯誤處理

2021-06-18 14:21:31 字數 1556 閱讀 4582

在專案開發中,錯誤處理是不可或缺的。錯誤處理幫助人們debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。錯誤處理還可以提高程式的容錯性。

我們之前在講迴圈物件的時候,曾提到乙個stopiteration的錯誤,該錯誤是在迴圈物件窮盡所有元素時的報錯。

我們以它為例,來說明基本的錯誤處理。

乙個包含錯誤的程式:

re = iter(range(5))

for i in range(100):

print

re.next()

print

'hahahaha

'

首先,我們定義了乙個迴圈物件re,該迴圈物件將進行5次迴圈,每次使用序列的乙個元素。

在隨後的for迴圈中,我們手工呼叫next()函式。當迴圈進行到第6次的時候,re.next()不會再返回元素,而是舉出(raise)stopiteration的錯誤。整個程式將會中斷。

我們可以修改以上錯誤程式,直到完美的沒有bug。但另一方面,如果我們在寫程式的時候,知道這裡可能犯錯以及可能的犯錯型別,我們可以針對該錯誤型別定義好」應急預案「。

re = iter(range(5))

try:

for i in range(100):

print

re.next()

except

stopiteration:

print

'here is end ',i

print

'hahahaha

'

在try程式段中,我們放入容易犯錯的部分。我們可以跟上except,來說明如果在try部分的語句發生stopiteration時,程式該做的事情。如果沒有發生錯誤,則except部分被跳過。

隨後,程式將繼續執行,而不是徹底中斷。

完整的語法結構如下:

try

: ...

except

error1:

...except

error2:

...else

: ...

finally

: ...

else是指所有其它的錯誤。finally是無論何種情況,最後都要做的一些事情。流程如下,try->except/else->finally

我們也可以自己寫乙個舉出錯誤的例子:

print

'lalala

'raise

stopiteration

print

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