调用下面的方法,得到的返回值是什么?
-
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。