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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252275.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

相機和鏡頭選型需要注意哪些問題

背景&#xff1a; 最近需要優于項目需求需要對工業相機和鏡頭進行選型&#xff0c;于是我就開啟的學習相機之旅&#xff0c;雖然我一直在做機器視覺方向&#xff0c;但是我對相機的了解還是很少&#xff0c;我想正好趁這次機會好好學習一下。如果有錯誤的觀點請指正。 一、相…

響應式網頁布局 - W3Schools How-Tos 01

W3Schools教學系列 W3Schools是知名的網頁設計&#xff0f;前端開發教學網站&#xff0c;不僅提供HTML、CSS、JavaScript等的詳盡教學&#xff0c;還可以把它當作說明文件&#xff08;Documents&#xff09;。有經驗的前端或多或少已經接觸過這個網站&#xff0c;因為它經常出現…

正則表達式,終極使用!3個工具,搞定一切

文章前提&#xff0c;本人。不會正則的不論什么語法&#xff0c;僅僅懂一點正則的概念。本人從未自己寫過正則&#xff0c;都是網上收羅進行改動的。相同。沒有時間去研究正則。 可是為了方便&#xff0c;入手了幾個工具。 如今就為大家一一展示。 第一個&#xff0c;regexBuil…

iOS 在tableview的側滑事件里執行tableView.selectRow無效的解決辦法

很奇怪的問題&#xff0c;在執行默認選中一個cell的時候&#xff0c;突然發現這句話不起作用了 &#xff08;我的場景是&#xff1a;當前cell側滑刪除后&#xff0c;默認選中上一個cell&#xff09; 搞了半天&#xff0c;終于發現罪魁禍首竟然是因為&#xff1a;這句話寫在了側…

VS2017 C++工程 執行python腳本

我解決了哪怕很小的一個問題&#xff0c;我也想記錄下來來見證我的經歷。 背景&#xff1a; 一、使用libhuru庫生成pdf報告 最近參與一些測試工作&#xff0c;希望測試結束后能夠根據測試得到的數據和圖像自動生成測試報告&#xff0c;最開始調研到了生成報告的庫有libharu和…

標準正弦波變頻電源調制方式的實現

目前變頻電源正不斷向規模化、專業化、智能化、精細化方向發展。變頻電源的技術隨著工業電器電子制造的興起而不斷得到重視和發展。其中,中港揚以正弦脈SPWM為核心變頻電源系統電路便是一個很好的代表。純硬件電路在焊接電路上比較復雜&#xff0c;但是調節出來的SPWM波形比較完…

Jmeter教程索引貼

Jmeter教程索引貼 新的一年即將到來&#xff0c;不知不覺2015年自己在Jmeter方面總結的文章有十幾篇&#xff0c;在此匯總一下&#xff0c;順便也算是個總結吧。2016年&#xff0c;繼續學習技術&#xff0c;總結&#xff0c;寫文章。 一、基礎部分&#xff1a; 使用Jmeter進行h…

類與接口(二)java的四種內部類詳解

引言 內部類&#xff0c;嵌套在另一個類的里面&#xff0c;所以也稱為 嵌套類; 內部類分為以下四種&#xff1a; 靜態內部類成員內部類局部內部類匿名內部類一、靜態內部類 靜態內部類&#xff1a; 一般也稱”靜態嵌套類“&#xff0c;在類中用static聲明的內部類。 因為是stat…

單例設計模式和多線程

單例設計模式 單例&#xff1a;整個項目中&#xff0c;有某個類或者某些特殊的類&#xff0c;屬于該類的對象只能建立一個。 #include<iostream> using namespace std;class MyCAS { private:MyCAS(){}private:static MyCAS *m_instance;public:static MyCAS *GetInstanc…

運行imgui例程

背景&#xff1a;目前在做一個視覺測試系統&#xff0c;需要做一個界面&#xff0c;將相機獲取的圖像&#xff0c;以及測試過程中的數據呈現在界面上&#xff0c;在我印象里&#xff0c;做界面就用qt吧&#xff0c;直到這個月真要開始做界面了&#xff0c;我的領導給我建議用im…

性能測試總結(三)--工具選型篇

性能測試總結(三)--工具選型篇 本篇文章主要簡單總結下性能測試工具的原理以及如何選型。性能測試和功能測試不同&#xff0c;性能測試的執行是基本功能的重復和并發&#xff0c;需要模擬多用戶&#xff0c;在性能測試執行時需要監控指標參數&#xff0c;同時性能測試的結果不是…

創建一個最簡單的imgui測試用例

在上一篇文章中&#xff0c;我們初步認識了一下imgui,并且成功運行了他提供的demo。這只是開始學習imgui的第一步&#xff0c;在實際使用時&#xff0c;我們需要將imgui應用到自己的工程中去&#xff0c;所以你需要具備將imgui加到你工程中去的能力&#xff0c;簡單起見&#x…

idea中maven的setting.xml的配置

2019獨角獸企業重金招聘Python工程師標準>>> <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

ref和out區別總結

ref&#xff1a;是必需要先初始化才能用,但調用時可以對它什么也不做.out&#xff1a;可以不初始化也能用,但調用時一定要對其賦值(即使已經初始化的也要賦值,哪怕是賦一個和原來一樣的值).轉載于:https://www.cnblogs.com/gjnsmallworld/p/7216206.html

繼 承(面向對象特征之一)

1&#xff1a;成員變量。 當子父類中出現一樣的屬性時&#xff0c;子類類型的對象&#xff0c;調用該屬性&#xff0c;值是子類的屬性值。 如果想要調用父類中的屬性值&#xff0c;需要使用一個關鍵字&#xff1a;super This&#xff1a;代表是本類類型的對象引用。 Super&…

如何將cv::Mat類型轉換為imgui中的ImTextureID類型

背景&#xff1a; 我原來的工程是使用opencv的&#xff0c;所以程序中的圖像都是表示為cv::Mat類型&#xff0c;為了能夠在imgui窗口中顯示我的cv::Mat的圖像&#xff0c;我找到了下面這個函數&#xff1a; void ImGui::Image(ImTextureID user_texture_id, const ImVec2&…

react native 原生模塊橋接的簡單說明

原文出自&#xff1a;https://github.com/prscX/awes...博客鏈接&#xff1a;https://ssshooter.com/2019-02... Android 創建原生模塊包 通過繼承 ReactPackage 為你的原生模塊包創建 Java 類&#xff0c;可以這么寫&#xff1a;覆蓋 createNativeModules 和 createViewManage…

UVa 1354 天平難題 枚舉二叉樹

題意&#xff1a;給出房間寬度 r 和 s 個掛墜的重量 wi&#xff0c;設計一個盡量寬的天平&#xff0c;掛著所有掛墜。天平由一些長度為 1 的木棍組成&#xff0c;木棍的每一端要么掛一個掛墜&#xff0c;要么掛另外一個木棍。 這題卡了很久&#xff0c;看了很多大神的代碼&…

通過指針便利圖像元素

for (size_t y 0; y < image.rows; y) {//row_ptr為第y行的頭指針&#xff0c;unsigned char* row_ptr image.ptr<unsigned char>(y);for (size_t x 0; x < image.cols; x) {//data_ptr: 指向待訪問像素unsigned char* data_ptr &row_ptr[x*image.channels…

[精華][推薦]SSO CAS單點登錄框架學習 搭建詳細步驟及源碼

1.了解單點登錄 SSO 主要特點是: SSO 應用之間使用 Web 協議(如 HTTPS) &#xff0c;并且只有一個登錄入口. SSO 的體系中有下面三種角色: 1) User(多個) 2) Web 應用(多個) 3) SSO 認證中心(一個) 2.SSO 實現包含以下三個原則 1) 所有的登錄都在 SSO 認證中心進行。 2) SS…