人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-03-11 13:43 | 文章來源:源碼中國

Python異常處理機(jī)制

如果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 EOFError
  except IOError:
print("IOEoor")
  finally:
print("I'm in finally")
break

dig_dig1()

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

I'm in while loop
I'm in try
I'm in finally
EOFError
Process finished with exit code 1

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

I'm in while loop
I'm in try
I'm in finally
Process finished with exit code 0
  1. 如果異常處理中存在finally, finally總會被執(zhí)行;
  2. 那么在執(zhí)行finally之前,try中的產(chǎn)生的異常將會被臨時(shí)保存起來,當(dāng)finally的代碼執(zhí)行完成后,再拋出異常;
  3. 但當(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 IndexError
  else:
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 try
12

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

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

總結(jié)

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

  1. 在執(zhí)行finally之前,try中的產(chǎn)生的異常將會被臨時(shí)保存起來,當(dāng)finally的代碼執(zhí)行完成后,再拋出異常; 但當(dāng)finally中存在raise或return或break時(shí), try中的異常將會被拋棄。
  2. 如果在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)注本站其它相關(guān)文章!

海外服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部