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之后执行的。
此测试较粗糙,如有其它方法证明,望告知。