trycatch执⾏顺序
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,则将覆盖返回栈中的值
作者:⾮⼩惰
链接:www.jianshu/p/4b21c0dddbe5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,⾮商业转载请注明出处。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论