欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

System.exit(0)与return的区别

程序员文章站 2022-07-13 23:33:38
...
问题:System.exit(0)与return的区别

1.try catch finally 若catch中有return ,finally中代码依然可以执行

参考文献:[url=http://mingyundezuoan.iteye.com/admin/blogs/2207675]try catch 中添加 return ,fianlly中的代码是否依然会执行?[/url]

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输出:
[b]catch[/b]

3.区别
[table]
|方法|return|System.exit(n)|
|main()|不能立即终止JVM运行|立即终止JVM运行|
|被调用方法|返回方法调用位置,其后的方法可以正常运行|终止运行,其后方法不执行|
[/table]

多线程例子:

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)返回最上一层调用
参考文献:
[url]http://bbs.csdn.net/topics/280057476[/url]
[url]http://blog.csdn.net/mmllkkjj/article/details/6149043[/url]