你真的知道吗?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中的返回值。
➡️

继续阅读