try catch finally 顺带一个system.exit();
恩 ?return执行时 try finnally的影响,跟加了system.exit()后的变化。
分析:try catch的语句块在执行之后不直接完成响应,而是去finally做完相应的操作.加上system.exit(0)则表示执行到此程序立即终止。如果想要在终止前做点什么 可以定义一个不开启的新thread去完成相应的工作,必须也在exit句之前去完成。
?
其实也没什么,遇到问题写个代码run一下。然后根据结果google 查阅相应的资料分析就好了。不要想当然就OK.
?
package demo;public class sf {public static void main(String[]args){System.out.println(tryFinallyTest0(3));System.out.println(tryFinallyTest0(-2));//tryFinallyTest1();//tryFinallyTest2();//tryFinallyTest3();//tryFinallyTest4();}public static int tryFinallyTest0(int n){try{if(n>1)return -5;else throw new Exception();}catch(Exception e){return 5;}finally{return 0;}}public static void tryFinallyTest1(){try{System.out.println("finish");System.exit(0);}finally{System.out.println("finishedTag");}}public static void tryFinallyTest2(){try{System.out.println("finish");System.exit(0);}finally{System.out.println("finishedTag");}}public static void tryFinallyTest3(){Runtime.getRuntime().addShutdownHook(new Thread(){public void run(){System.out.println("finishedTag");}});try{System.out.println("finish");}finally{}System.exit(0);}public static void tryFinallyTest4(){try{System.out.println("finish");System.exit(0);}finally{Runtime.getRuntime().addShutdownHook(new Thread(){public void run(){System.out.println("finishedTag");}});}}}
?
?
?