最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python異常處理機制結構實例解析

 更新時間:2020年07月23日 15:37:42   作者:bashliuhe  
這篇文章主要介紹了Python異常處理機制結構實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

首先,Python 完整的異常處理語法結構如下:

try:
  #業(yè)務實現(xiàn)代碼
except Exception1 as e:
  #異常處理塊1
  ...
except Exception2 as e:
  #異常處理塊2
  ...
#可以有多個 except
...
else:
  #正常處理塊
finally :
  #資源回收塊
  ...

整個異常處理結構的執(zhí)行過程,如圖 1 所示。

注意,在整個異常處理結構中,只有 try 塊是必需的,也就是說:

  • 如果沒有 try 塊,則不能有后面的 except 塊、else 塊和 finally 塊。但是也不能只使用 try 塊,要么使用 try except 結構,要么使用 try finally 結構;
  • except 塊、else 塊、finally 塊都是可選的,當然也可以同時出現(xiàn);
  • 可以有多個 except 塊,但捕獲父類異常的 except 塊應該位于捕獲子類異常的 except 塊的后面;
  • 多個 except 塊必須位于 try 塊之后,finally 塊必須位于所有的 except 塊之后。
  • 要使用 else 塊,其前面必須包含 try 和 except。

其中,很多初學者分不清 finally 和 else 的區(qū)別,這里著重說一下。else 語句塊只有在沒有異常發(fā)生的情況下才會執(zhí)行,而 finally 語句則不管異常是否發(fā)生都會執(zhí)行。不僅如此,無論是正常退出、遇到異常退出,還是通過 break、continue、return 語句退出,finally 語句塊都會執(zhí)行。

注意,如果程序中運行了強制退出 Python 解釋器的語句(如 os._exit(1) ),則 finally 語句將無法得到執(zhí)行。例如:

import os
try:
  os._exit(1)
finally:
  print("執(zhí)行finally語句")

運行程序,沒有任何輸出。因此,除非在 try 塊、except 塊中調(diào)用了退出 Python 解釋器的方法,否則不管在 try 塊、except 塊中執(zhí)行怎樣的代碼,出現(xiàn)怎樣的情況,異常處理的 finally 塊總會被執(zhí)行。

另外在通常情況下,不要在 finally 塊中使用如 return 或 raise 等導致方法中止的語句(raise 語句將在后面介紹),一旦在 finally 塊中使用了 return 或 raise 語句,將會導致 try 塊、except 塊中的 return、raise 語句失效??慈缦鲁绦颍?/p>

def test():
  try:
    # 因為finally塊中包含了return語句
    # 所以下面的return語句失去作用
    return True
  finally:
    return False
print(test())

上面程序在 finally 塊中定義了一條 return False 語句,這將導致 try 塊中的 return true 失去作用。運行上面程序,輸出結果為:

False

同樣,如果 Python 程序在執(zhí)行 try 塊、except 塊包含有 return 或 raise 語句,則 Python 解釋器執(zhí)行到該語句時,會先去查找 finally 塊,如果沒有 finally 塊,程序才會立即執(zhí)行 return 或 raise 語句;反之,如果找到 finally 塊,系統(tǒng)立即開始執(zhí)行 finally 塊,只有當 finally 塊執(zhí)行完成后,系統(tǒng)才會再次跳回來執(zhí)行 try 塊、except 塊里的 return 或 raise 語句。

但是,如果在 finally 塊里也使用了 return 或 raise 等導致方法中止的語句,finally 塊己經(jīng)中止了方法,系統(tǒng)將不會跳回去執(zhí)行 try 塊、except 塊里的任何代碼。

盡量避免在 finally 塊里使用 return 或 raise 等導致方法中止的語句,否則可能出現(xiàn)一些很奇怪的情況。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

八宿县| 内黄县| 息烽县| 赤峰市| 田东县| 庐江县| 益阳市| 开江县| 双柏县| 托克逊县| 郯城县| 上蔡县| 泾源县| 衡山县| 孟连| 马关县| 长武县| 昂仁县| 修文县| 临泉县| 塘沽区| 镇赉县| 兰溪市| 忻州市| 阳泉市| 叶城县| 鄂托克旗| 罗田县| 抚顺市| 南溪县| 故城县| 东莞市| 梅州市| 广饶县| 玛曲县| 五河县| 北票市| 扶沟县| 阿图什市| 柳河县| 平度市|