1.try catch finally 若catch中有return ,finally中代码依然可以执行
参考文献: try catch 中添加 return ,fianlly中的代码是否依然会执行?
2.try catch finally 若catch中有System.exit(0),finally中代码不可以执行
public static void main(String[] args) { try{ int result = 0/0 ; System.out.println(result); }catch(Exception e){ System.out.println("catch"); System.exit(0); }finally{ System.out.println("finally"); } System.out.println("after finally"); }
Console输出:
catch
3.区别
方法 | return | System.exit(n) |
main() | 不能立即终止JVM运行 | 立即终止JVM运行 |
被调用方法 | 返回方法调用位置,其后的方法可以正常运行 | 终止运行,其后方法不执行 |
多线程例子:
new myThread().start(); if(条件为真) return; //此处的return并不能立即结束main。等待线程myThread //若换成System.exit(数值);则立即无条件地结束。 //其它代码
4.总结
(1)在main()中的区别:
当用return;返回时,main()并不能立即运行结束,而用System.exit(数值);时,main()将立即无条件的结束
(2)system.exit(0)表示程序正常退出,system.exit(1)表示非正常退出,都没有返回值。return则返回至调用该方法的地方,如果后面还有代码则继续执行
(3)return返回上一层调用;System.exit(n)返回最上一层调用
参考文献:
http://bbs.csdn.net/topics/280057476
http://blog.csdn.net/mmllkkjj/article/details/6149043