亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析

瀏覽:2日期:2022-07-16 14:32:46

首先,Python 完整的異常處理語法結(jié)構(gòu)如下:

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

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

Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析

注意,在整個異常處理結(jié)構(gòu)中,只有 try 塊是必需的,也就是說:

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

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

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

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

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

另外在通常情況下,不要在 finally 塊中使用如 return 或 raise 等導(dǎo)致方法中止的語句(raise 語句將在后面介紹),一旦在 finally 塊中使用了 return 或 raise 語句,將會導(dǎo)致 try 塊、except 塊中的 return、raise 語句失效。看如下程序:

def test(): try: # 因?yàn)閒inally塊中包含了return語句 # 所以下面的return語句失去作用 return True finally: return Falseprint(test())

上面程序在 finally 塊中定義了一條 return False 語句,這將導(dǎo)致 try 塊中的 return true 失去作用。運(yùn)行上面程序,輸出結(jié)果為:

False

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩不卡手机视频在线观看 | 国产高清资源 | 国产精品亚洲一区二区三区 | 黄色网址网站在线观看 | 精品视频一区二区三区在线观看 | 香焦视频在线观看黄 | 国产成人福利在线视老湿机 | 奇米网狠狠网 | 九九热在线视频观看 | xvideos亚洲网站入口 | 日日cao| 久久精品免视看国产明星 | 青青久在线视频免费观看 | 精品无码一区在线观看 | 国产伦一区二区三区高清 | 草草草在线视频 | 亚洲视频一 | 精品九九久久国内精品 | 国产在线日本 | 99视频在线看观免费 | 人人婷婷色综合五月第四人色阁 | 国产精品大片天天看片 | 国内精品视频 在线播放 | 亚州性视频 | a毛片免费全部在线播放毛 a毛片免费全部播放毛 | 色xxx| 国产精品高清一区二区三区 | 美国a级作爱片免费观看美国 | 亚洲无线码一区二区三区在线观看 | 亚洲国产成人精品青青草原100 | 精品一区二区三区高清免费观看 | 一级做a爱视频 | 日韩欧美在线中文字幕 | 欧美一级特黄aaa大片 | 欧美啊啊 | 一区二区视频在线播放 | 国产伦精品一区二区三区无广告 | 视频在线二区 | 欧美一级二级三级视频 | 亚洲国产精品久久久久秋霞66 | 香蕉在线视频观看 |