你真的知道吗?catch、finally和return哪个先执行
原文中文,约1900字,阅读约需5分钟。
📝
内容提要
通过C#和Java代码示例,讲述了try...catch...finally中catch和finally代码块的执行顺序问题,以及在finally代码块中修改返回值或抛出异常的影响。
🎯
关键要点
-
在try...catch...finally结构中,catch代码块在finally代码块之后执行。
-
方法调用时,异常对象和返回值被存放在Stack Frame中。
-
无论是throw异常还是return返回值,finally代码块会在这些操作之后执行。
-
在finally中抛出异常会覆盖try块中的异常,最终抛出的异常是finally中的异常。
-
C#不允许在finally中使用return语句,但Java允许,且在finally中return会覆盖try中的返回值。
🏷️