Re: Java中异常处理流程

现有如下方法:

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

posted @ 2019-08-15 19:43  Noperx  阅读(116)  评论(0编辑  收藏  举报