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語句,except分句攔截處理異常后,會(huì)停止異常,不再向外傳遞。
比如,try語句代碼塊調(diào)用函數(shù)f2,同時(shí)f2函數(shù)代碼塊也用了try語句代碼塊,且調(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語句的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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中parsel兩種獲取數(shù)據(jù)方式小結(jié)
本文主要介紹了Python中parsel兩種獲取數(shù)據(jù)方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Python使用Apache Kafka時(shí)Poll拉取速度慢的解決方法
在使用Apache Kafka時(shí),poll方法拉取消息速度慢常見于網(wǎng)絡(luò)延遲、消息大小過大、消費(fèi)者配置不當(dāng)或高負(fù)載情況,本文提供了優(yōu)化消費(fèi)者配置、并行消費(fèi)、優(yōu)化消息處理邏輯和監(jiān)控調(diào)試的解決方案,并附有Python代碼示例和相關(guān)類圖、序列圖以幫助理解和實(shí)現(xiàn)2024-09-09
Python類中的裝飾器在當(dāng)前類中的聲明與調(diào)用詳解
這篇文章主要介紹了Python類中的裝飾器在當(dāng)前類中的聲明與調(diào)用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python數(shù)據(jù)可視化 – 利用Bokeh和Bottle.py在網(wǎng)頁上展示你的數(shù)據(jù)
本文將展示如何使用python搭建一個(gè)網(wǎng)頁應(yīng)用來展示你的數(shù)據(jù)圖表 很多有關(guān)于使用python搭建網(wǎng)頁應(yīng)用的文章聚焦在如何教讀者搭建一個(gè)網(wǎng)頁應(yīng)用(大多是博客),很多關(guān)于使用python做數(shù)據(jù)可視化的文章聚焦在如何教讀者使用python的圖表庫來做可視化2021-10-10
pytorch.range()和pytorch.arange()的區(qū)別及說明
這篇文章主要介紹了pytorch.range()和pytorch.arange()的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
使用Python實(shí)現(xiàn)文本轉(zhuǎn)語音(TTS)并播放音頻
在開發(fā)涉及語音交互或需要語音提示的應(yīng)用時(shí),文本轉(zhuǎn)語音(TTS)技術(shù)是一個(gè)非常實(shí)用的工具,下面我們來看看如何使用gTTS和playsound庫將文本轉(zhuǎn)換為語音并播放音頻文件吧2025-03-03

