python嵌套異常的兩種處理器
python的異常處理器支持嵌套。
1 嵌套的try/except處理器
用法
def f1(): raise E def f2(): try: f1() except E: pass try: f2() except E: pass
描述
嵌套的try/except處理器,發(fā)生異常時(shí),控制權(quán)會(huì)跳回具有相符的except分句、最近進(jìn)入的try語(yǔ)句,except分句攔截處理異常后,會(huì)停止異常,不再向外傳遞。
比如,try語(yǔ)句代碼塊調(diào)用函數(shù)f2,同時(shí)f2函數(shù)代碼塊也用了try語(yǔ)句代碼塊,且調(diào)用函數(shù)f1。若f1發(fā)生異常,被f2的try捕獲,則異常將會(huì)結(jié)束,不會(huì)再向外傳遞。
示例
>>> def f1(): print(1+[]) >>> def f2(): try: f1() except TypeError: print('調(diào)用f1發(fā)生異常') >>> try: f2() except TypeError: print('調(diào)用f2發(fā)生異常') 調(diào)用f1發(fā)生異常 # 等效寫法 >>> try: try: print(1+[]) except TypeError: print('內(nèi)部try發(fā)生異常') except TypeError: print('外部try發(fā)生異常') 內(nèi)部try發(fā)生異常 # raise手動(dòng)向外傳遞異常 >>> try: try: print(1+[]) except TypeError as te: print('內(nèi)部try發(fā)生異常') # raise手動(dòng)向外傳遞異常 raise te except TypeError: print('外部try發(fā)生異常') 內(nèi)部try發(fā)生異常 外部try發(fā)生異常
2 嵌套的try/finally處理器
用法
def f1(): raise E def f2(): try: f1() except E: #except分句代碼塊 finally: #finally分句代碼塊 try: f2() except E: #except分句代碼塊 finally: #finally分句代碼塊
描述
嵌套的try/finally處理器,控制權(quán)回到最近進(jìn)入的try執(zhí)行finally分句代碼塊,異常會(huì)繼續(xù)向外傳播到所有激活狀態(tài)下的try語(yǔ)句的finally分句的代碼塊,直到頂層finally處理器。即嵌套finally攔截異常但不終止異常。
注:不管是否發(fā)生異常,finally分句都會(huì)執(zhí)行。
示例
>>> def f1(): print(1+[]) >>> def f2(): try: f1() except TypeError: print('調(diào)用f1發(fā)生異常') finally: print('處理f1的finally') >>> try: f2() except TypeError: print('調(diào)用f2發(fā)生異常') finally: print('處理f2的finally') 調(diào)用f1發(fā)生異常 處理f1的finally 處理f2的finally # 等效寫法 >>> try: try: print(1+[]) except TypeError: print('內(nèi)部try發(fā)生異常') finally: print('內(nèi)部try的finally') except TypeError: print('外部try發(fā)生異常') finally: print('外部try的finally') 內(nèi)部try發(fā)生異常 內(nèi)部try的finally 外部try的finally
到此這篇關(guān)于python嵌套異常的兩種處理器的文章就介紹到這了,更多相關(guān)python嵌套異常處理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用Python快速繪制海報(bào)級(jí)別地圖詳解
Python之所以這么流行,是因?yàn)樗粌H能夠應(yīng)用于科技領(lǐng)域,還能用來做許多其他學(xué)科的研究工具,最常見的便是繪制地圖,這篇文章主要給大家介紹了關(guān)于如何利用Python快速繪制海報(bào)級(jí)別地圖的相關(guān)資料,需要的朋友可以參考下2021-09-09linux系統(tǒng)使用python監(jiān)測(cè)網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出
這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測(cè)網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出信息,大家參考使用吧2014-01-01python實(shí)現(xiàn)反轉(zhuǎn)部分單向鏈表
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)反轉(zhuǎn)部分單向鏈表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Python matplotlib通過plt.scatter畫空心圓標(biāo)記出特定的點(diǎn)方法
今天小編就為大家分享一篇Python matplotlib通過plt.scatter畫空心圓標(biāo)記出特定的點(diǎn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解
這篇文章主要介紹了Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02TensorFlow中關(guān)于tf.app.flags命令行參數(shù)解析模塊
這篇文章主要介紹了TensorFlow中關(guān)于tf.app.flags命令行參數(shù)解析模塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11python 隊(duì)列基本定義與使用方法【初始化、賦值、判斷等】
這篇文章主要介紹了python 隊(duì)列基本定義與使用方法,結(jié)合實(shí)例形式分析了Python隊(duì)列的定義、初始化、賦值、判斷等相關(guān)操作技巧,需要的朋友可以參考下2019-10-10