调用下面的方法,得到的返回值是什么?

发布于 2020-01-05 10:15:42
关注者
0
被浏览
711
1 个回答
  • 面试哥
    面试哥 2020-01-05
    为面试而生,有面试问题,就找面试哥。
    1. public int getNum() {
    2.     try {
    3.         int a = 1 / 0;
    4.         return 1;
    5.     } catch (Exception e) {
    6.         return 2;
    7.     } finally {
    8.         return 3;
    9.     }
    10.}
    

    代码走到第3行的时候遇到了一个MathException,这时第4行的代码就不会执行了,代码直接跳转到catch语句中,走到第 6 行的时候,异常机制有一个原则:如果在catch中遇到了return或者异常等能使该函数终止的话那么有finally就必须先执行完finally代码块里面的代码然后再返回值。因此代码又跳到第8行,可惜第8行是一个return语句,那么这个时候方法就结束了,因此第6行的返回结果就无法被真正返回。如果finally仅仅是处理了一个释放资源的操作,那么该道题最终返回的结果就是2。因此上面返回值是3。

面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看