电子商务网站建设选择服务器要考虑的因素有,手机网站维护费,建的企业网站如何在百度搜到,3d建模自学教程一、finally语句块是否一定执行#xff1f; Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行#xff1f;很多人都说不是#xff0c;当然他们的回答是正确的#xff0c;经过试验#xff0c;至少以下有两种情况下finally语句是不会被执行的 Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行很多人都说不是当然他们的回答是正确的经过试验至少以下有两种情况下finally语句是不会被执行的 1异常捕获机制finally块与try和catch块是关联的既然是关联的如果try...catch...finally语句逻辑上达不到没有被执行如在try语句之前就返回了这样finally语句就不会执行这也说明了finally语句被执行的必要而非充分条件是相应的try...catch...finally语句一定被执行到。 2在try块中有System.exit(0);这样的语句System.exit(0);是终止Java虚拟机JVM的连JVM都停止了所以都结束了当然finally语句也不会被执行到。 二、finally语句块是否一定会执行遇到return怎么办 public class FinallyTest1 {public void test(){try{System.out.println(Try statement block……);return ;}catch(Exception e){System.out.println(Exception statement block……);}finally{System.out.println(在try语句块中return你再强大也影响不了我finally语句块的继续执行嘿嘿……);}}public static void main(String[] args) {FinallyTest1 tnew FinallyTest1();t.test();}
}/*运行结果Try statement block……在try语句块中return你再强大也影响不了我finally语句块的继续执行嘿嘿……总结finally语句块的执行不会受到try语句块中的return的影响。
*/三、finally语句块不受return语句的影响哪finally语句块到底是在return之前还是之后执行 public class FinallyTest2 {private int test(){ int a520;try{return a1314000;}catch(Exception e){System.out.println();}finally{System.out.println(Finally执行,a值为:a);a0;System.out.println(小闹了一下a0,嘿嘿);}return 250;}public static void main(String[] args) {FinallyTest2 tnew FinallyTest2();System.out.println(方法返回return :t.test());}}
/*
运行结果Finally执行,a值为1314520小闹一下a0嘿嘿方法返回return :1314520总结在try语句块中运行到了return时并不是立即返回而是把return要返回的值计算出来先保存到内存中然后去执行finally语句块然后再返回之前保存要return的值。
*/四、在返回之前执行在finally块中的语句哪finally块中也return会怎么样呢 public class FinallyTest3 {//SuppressWarnings 批注允许您选择性地取消特定代码段即类或方法中的警告。SuppressWarnings(finally) private int test(){ try{return 520;}catch(Exception e){System.out.println();}finally{return 5820; //此处return语句会产生警告}}public static void main(String[] args) {FinallyTest3 tnew FinallyTest3();System.out.println(方法返回return :t.test());}
}
/*
运行结果方法返回return :5820总结如果try和finally都有return 语句则返回值以最后一个return语句的值作为返回前面的一个被默认的牺牲啦。
*/