python嵌套異常的兩種處理器
python的異常處理器支持嵌套。
1 嵌套的try/except處理器
用法
def f1():
raise E
def f2():
try:
f1()
except E:
pass
try:
f2()
except E:
pass
描述

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

