av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

python - 為什么這段代碼沒有異常拋出?

瀏覽:147日期:2022-08-21 16:17:25

問題描述

In [8]: def bar(): ...: a = 10 ...: try: ...: raise ...: except: ...: try: ...: raise ...: except: ...: raise ...: finally: ...: return aIn [9]: bar()Out[9]: 10

問題解答

回答1:

這個還挺有意思的,首先跑幾個代碼

1. 這段代碼表示你不要管套幾層try,其實只要弄清楚except下為什么不拋出異常即刻

def bar(): a = 10 try:print 1raise except:print 2raise finally:print 3return abar()# 打印(沒有拋出異常): # 2# 32. 這段代碼表示如果finally如果有return語句,則不會拋出異常,沒有return則會拋出異常

def bar(): a = 10 try:print 1raise except:print 2raise finally:print 3# return abar()# 打印(拋出了異常):# 2# Traceback (most recent call last):# 3# File '/Users/xuxin/workplace/DailyScript/segmentfault/file_list_to_dict.py', line 23, in <module># bar()# File '/Users/xuxin/workplace/DailyScript/segmentfault/file_list_to_dict.py', line 18, in bar# raise ValueError()# ValueError3. 我去查了一下,看到了這篇文章深入理解Python的finally

看來f()在拋出異常并后,執行了except中的return,但是并沒有返回到調用者,而是“堅持”將finally中的代碼執行完畢。至此,我算是真正理解了finally的真正含義,就是即使已經return,仍要執行finally中的代碼。

這里我們同樣可以這么理解,在try中如果出現了需要退出方法的語句,但他會努力執行finally,如果finally有return方法,則會立即返回,不會執行之前的退出語句。這個時候,我們可以看看這串代碼

def bar(): a = 10 try:print 1raise finally:print 3return abar()# 打印(沒有拋出異常): # 34.這個時候是不是對finally比較清楚了呢~

現學現賣,如有錯誤,請指出修改~

回答2:

要是最后還是拋出了異常,那你的except語句不是白寫了?

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 色噜噜狠狠一区二区三区果冻 | 国产在线a| 五月婷婷网站 | 日韩精品视频免费播放 | 18成人免费观看网站 | 久久久中文字幕 | 国产又黄又猛 | 国产裸体永久免费视频网站 | 伊人久久在线 | 中国少妇xxxxhd做受 | 四虎影院在线免费观看 | 欧美亚洲国产精品 | 婷婷久久五月天 | 狠狠干狠狠干 | 亚洲毛片在线 | 色综合天天综合网国产成人网 | 中文字幕高清在线 | 亚洲砖区区免费 | 成人在线播放视频 | 亚洲永久免费视频 | 美女免费视频网站 | 亚洲h视频 | 久久国产精品一区二区三区 | 在线观看日韩 | 福利小视频在线观看 | 高潮毛片无遮挡免费看 | 婷婷综合 | 一级黄色网 | 久久久久久国产精品 | 欧美性生活网站 | 男人的天堂在线 | 成人一级视频 | 国产精品成人免费一区久久羞羞 | 亚洲播放| 爱爱免费网站 | 天堂成人| 亚洲精品在线视频观看 | 美国一级大黄一片免费中文 | www.久久久久久 | 91白浆| 亚洲综合免费 |