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