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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容