日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?...

發布時間:2023/12/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  這是一道面試題,首先finally{}里面的code肯定是會執行的,至于在return前還是后,

看答案說的是在return后執行,我覺得不對,百度了一下,有說return前的,有說return后的,還有return中間執行的。遂做了一個小測試如下:

static void Main(string[] args){//測試Test();System.Console.WriteLine("結束了");System.Console.ReadLine();}/// <summary>/// 測試/// </summary>/// <returns></returns>private static int Test(){try{System.Console.WriteLine("好,開始了");return ReturnInt();}catch (Exception exception){System.Console.WriteLine("我是異常");throw;}finally{System.Console.WriteLine("我是finally");}}/// <summary>/// 返回數字/// </summary>/// <returns></returns>private static int ReturnInt(){System.Console.WriteLine("我是return");return 1;}

  測試結果如下:

  

  所以我覺得finally{}里面的code是在return之后執行的。

  此測試較粗糙,如有其它方法證明,望告知。

----------------------------------------------------------------------------------------------華麗的分割線-----------------------------------------------------------------------------------------------------------------------------------------------

  之前的測試果然很粗糙,搞錯了一個概念,return到底是在什么時候才算執行,什么時候執行完。上面打印“我是return”的時候,我以為是return執行完了,其實那個時候只是去準備return的返回值去了,并沒有真正的返回“1”并跳出Test()方法,準備好返回值之后,接著去執行finally{}里面的code,打印了“我是finally”,最后Test()方法才算執行完,并真正的返回(return)“1”到main里面。

按照@以后會覺得昵稱很幼稚 老哥的提醒,修改了一下main()里面的代碼,

static void Main(string[] args){//測試Console.WriteLine("Test結果:" + Test());System.Console.WriteLine("結束了");System.Console.ReadLine();}

  結果如下:

  

  所以finally{}里面的code應該是在return之前執行的。

  在http://bbs.csdn.net/topics/60474475 此貼中,五樓的老哥的話,“函數應該是棧調用,如果先執行return?,哪不是退到上個棧了,怎么調用finally,?所以我覺得先調用finally”,

  在http://blog.csdn.net/gaoyuanfeng/article/details/4064388 文章中,finally與return的關系也講得很明白了,這一天天的真是受教了。

轉載于:https://www.cnblogs.com/bookobe/p/8491041.html

總結

以上是生活随笔為你收集整理的try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。