System.exit(0)与return的区别

问题:System.exit(0)与return的区别

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

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2211938
今日推荐