Java如果在try⾥⾯执⾏return还会不会执⾏finally
前⾔
我们都知道,finally在捕获异常的操作中,总是最后并且⼀定会执⾏的。那么,如果我在使⽤try finally的时候,如果try 给了⼀个return,那么还会不会执⾏finally呢?这⾥就来试⼀试
finally
Finally代码不管有没有异常发⽣它都会执⾏。
没有异常发⽣的时候,在try内的代码执⾏结束后,执⾏finally。
如果发⽣了异常并且给catch捕获,则在执⾏完catch之后执⾏finally。
如果有异常且未被捕获,则在异常被抛给上层之前执⾏。
事实上,不⽤try catch也可以直接执⾏ try finally。那么如果我在try ⾥⾯使⽤ return 会怎样呢?
代码如下
public class Test {
public static void main(String[] args) {
int result = fun();
System.out.println("result = " + result);
}
try catch的使用方法public static int fun(){
int ret = 0;
try{
return ret;
}finally {
ret = 5;
System.out.println("ret = " + ret);
}
}
}
测试的结果是,finally⾥⾯的代码依然会被执⾏。但是,虽然给ret赋值了5。但返回的值最终还是0。所以,即使在try⾥⾯使⽤了return,也依然会执⾏finally。但是finally⽆法改变return的值。
因为在执⾏的过程中, try执⾏到return,会先把ret的值保存在⼀个临时变量中,等到finally执⾏完毕之后才会返回。因此finally ⽆法改变最终的返回结果
那么,如果我在finally⾥⾯也执⾏⼀个return呢?结果会怎样?
代码如下
public class Test {
public static void main(String[] args) {
int result = fun();
System.out.println("result = " + result);
}
public static int fun(){
int ret = 0;
try{
return ret;
}finally {
ret = 5;
return ret;
}
}
}
这个时候try⾥⾯的return就会丢失。只会执⾏finally⾥⾯的return
到此这篇关于Java如果在try⾥⾯执⾏return,那么还会不会执⾏finally的⽂章就介绍到这了,更多相关java try执⾏return内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论