久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Python異常處理中容易犯得錯(cuò)誤總結(jié)

瀏覽:2日期:2022-06-16 18:20:51
目錄Python異常處理機(jī)制容易犯的錯(cuò)誤1容易犯的錯(cuò)誤2總結(jié)Python異常處理機(jī)制

Python異常處理中容易犯得錯(cuò)誤總結(jié)

如果try異常處理中存在finally,finally中的代碼總會得到執(zhí)行

下面例子只是作為演示,不用去糾結(jié)業(yè)務(wù)邏輯

容易犯的錯(cuò)誤1

看下面的代碼,寫出輸出結(jié)果

def dig_dig1(): while True:print('I’m in while loop')try: print('I’m in try') raise EOFErrorexcept IOError: print('IOEoor')finally: print('I’m in finally') breakdig_dig1()

原以為會輸出的結(jié)果:

I’m in while loopI’m in tryI’m in finallyEOFErrorProcess finished with exit code 1

運(yùn)行結(jié)果

I’m in while loopI’m in tryI’m in finallyProcess finished with exit code 0 如果異常處理中存在finally, finally總會被執(zhí)行; 那么在執(zhí)行finally之前,try中的產(chǎn)生的異常將會被臨時(shí)保存起來,當(dāng)finally的代碼執(zhí)行完成后,再拋出異常; 但當(dāng)finally中存在raise或return或break時(shí), try中的異常將會被拋棄。容易犯的錯(cuò)誤2

看下面的代碼,寫出輸出結(jié)果

def dig_dig2(index): try:print('I’m in try')if index < 0: raise IndexErrorelse: return index except IndexError:print('I’m in except')return 'except' finally:print('I’m in finally')return 'finally'print(dig_dig2(12))

原以為會輸出的結(jié)果:

I’m in try12

運(yùn)行結(jié)果

I’m in tryI’m in finallyfinallyProcess finished with exit code 0 如果異常處理中存在finally, finally總會被執(zhí)行。 如果在try塊語句中存在return的同時(shí)又存在finally塊語句,那么將會在執(zhí)行try塊語句中return語句之前去執(zhí)行finally語句塊,然后再回來執(zhí)行try塊語句中return語句。 但是例子中在finally塊語句中存在return語句,整個(gè)函數(shù)已結(jié)束,所以try塊語句中return語句將永遠(yuǎn)得不到執(zhí)行。總結(jié)

一般情況下,如果異常處理中存在finally, finally總會被執(zhí)行。但是,存在以下情況就需要注意:

在執(zhí)行finally之前,try中的產(chǎn)生的異常將會被臨時(shí)保存起來,當(dāng)finally的代碼執(zhí)行完成后,再拋出異常; 但當(dāng)finally中存在raise或return或break時(shí), try中的異常將會被拋棄。 如果在try塊語句中存在return的同時(shí)又存在finally塊語句,那么將會在執(zhí)行try塊語句中return語句之前去執(zhí)行finally語句塊,然后再回來執(zhí)行try塊語句中return語句。但是在finally塊語句中存在return語句,整個(gè)函數(shù)已結(jié)束,所以try塊語句中return語句將永遠(yuǎn)得不到執(zhí)行。

以上就是Python異常處理中容易犯得錯(cuò)誤總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于python 異常處理的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 二手房| 松溪县| 松桃| 盐山县| 丹棱县| 荥阳市| 龙川县| 靖边县| 会宁县| 大理市| 榆林市| 武威市| 且末县| 同德县| 安化县| 彭泽县| 双江| 宜君县| 云梦县| 桦川县| 临沧市| 法库县| 枝江市| 金秀| 泰宁县| 高陵县| 浮山县| 南陵县| 东源县| 广南县| 宁晋县| 盐津县| 屏东市| 维西| 芜湖市| 屏边| 资源县| 龙门县| 麻江县| 东明县| 通山县|