今天给各位分享javafinally什么时候不执行的知识,其中也会对javafinally作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、Java finally语句到底是在return之前还是之后执行2、java中finally语句快会不会执行的问题3、java什么情况不走finally
Java finally语句到底是在return之前还是之后执行
至少有两种情况下finally语句是不会被执行的:
1 try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。
2 在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。
finally块的语句
在try或catch中的return语句执行之后
返回参数之前执行
且finally里的修改语句,可能影响也可能不影响try或catch中
return已经确定的返回值,
若finally里也有return语句则覆盖try或catch中的return语句直接返回。
网上有很多详细分析finally作用机制的帖子。
java中finally语句快会不会执行的问题
视情况而定。
示例代码如下:
public static void main(String[] args) {
test();
}
public static int test() {
int i = 1;
/**注释1**/
//if (i == 1) {
//System.out.println(i);
//return 2;
//}
try {
System.out.println(“try block”);
/**注释2**/
//if(i==1){
//System.exit(0);
//}
return i += 100;
} catch (Exception e) {
System.out.println(“catch block”);
} finally {
System.out.println(“finally block”);
if (i = 1) {
System.out.println(“i1, i = ” + i);
}
}
System.out.println(“hello”);
return i;
}
1、当try语句没执行时,catch和finally语句块均不执行。撤销注释1,保留注释2时输出结果为:
1
2、try语句正常执行但有System.exit(0)时,后面的语句不执行。保留注释1,撤销注释2。
java什么情况不走finally
Java的finally语句不会被执行的唯一情况是:先执行了用于终止程序的System.exit()方法
Java代码
public class Test
{
public static void main(String[] args)
{
try
{
System.out.println(“Start”);
System.exit(0);
}finally
{
System.out.println(“Finally”);
}
System.out.println(“End”);
}
}
输出结果为:Start
当然,如果在执行一般的没有System.exit()语句的try语句时,突然断电了,这时所有进程都会终止,也不会执行finally语句。
javafinally什么时候不执行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javafinally作用、javafinally什么时候不执行的信息别忘了在本站进行查找喔。