try catch执行顺序


try catch是编程中总会出现的一组搭档,在运行时异常中我们可以添加他们进行代码的客户端的友好性提示,在检测性异常是他们是必不可少的一份子,组合机构如下

try{

       //业务逻辑的小集合

}catch(Exception e){

       //异常的捕获

}finally{

      //无论是否异常,我都在这里,不离不弃

}

那么异常的执行顺序如何呢,简单说明如下

try-catch-finally-return finally -return catch---return function

也就是说当程序出现异常时,如果我在finally中填写了return,那么最后return的出发点在finally,但是如果我在catch中填写了return那么程序在执行了finally后回执行catch的return,

如下代码输出

publicStringtest(){

inti =1;

intj =0;

try{

    i = i+1;

    j = i/j;

    return"try"+i++;

}catch(Exception e){

    i = i+1;

    e.printStackTrace();

    return"catch"+i++;

}finally{

    i = i+1;

}

}

若在finally中添加return则返回值为5,但在catch中添加,返回值为3,为什么会这样呢,为什么先执行了finally再进行返回,但返回结果不是5呢,

这和返回机制有关,当执行到catch时,将返回值3放到了返回栈中,执行finally结束后返回栈进行返回,并未影响i的值,但如果finally中也有return,则将覆盖返回栈中的值



作者:非小惰
链接:https://www.jianshu.com/p/4b21c0dddbe5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM