try catch执行顺序

作者: 非小惰 | 来源:发表于2017-07-06 16:29 被阅读0次

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,则将覆盖返回栈中的值

相关文章

网友评论

    本文标题:try catch执行顺序

    本文链接:https://www.haomeiwen.com/subject/qknhhxtx.html