1、System.exit(0)和System.exit(1)有什么区别?
2、在什么情况下执行System.exit()不会抛出异常?如果抛出了SecurityException异常,一般是因为什么原因?
3、如果我想中止当前运行的java程序,除了执行System.exit()还能用什么方法?
1。程序返回值不同。
2。抛出SecurityException是因为你调用了不允许的操作。比如在Applet中操作本地文件,或者在RMI程序中操作不允许的文件。Sun对于这个有专门的文章和解决方法。
3。对于java程序,运行System.exit()会终止JVM,所以Servlet和Applet中都不应该显示调用这个方法。
2個同為exit
public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非零的状态码表示异常终止。零状态是终止整个程序。
如果在main方法中System.exit(0)与return 没有区别,都是终止程序。
如果是别的方法,那System.exit(0)直接终止程序,就算后面有代码也不执行了
而return则返回至调用该方法的地方,如果后面还有代码则继续执行
2.解析
查看java.lang.System的源代码,我们可以找到System.exit(status)这个方法的说明,代码如下:
/** * Terminates the currently running Java Virtual Machine. The * argument serves as a status code; by convention, a nonzero status * code indicates abnormal termination. * <p> * This method calls the <code>exit</code> method in class * <code>Runtime</code>. This method never returns normally. * <p> * The call <code>System.exit(n)</code> is effectively equivalent to * the call: * <blockquote><pre> * Runtime.getRuntime().exit(n) * </pre></blockquote> * * @param status exit status. * @throws SecurityException * if a security manager exists and its <code>checkExit</code> * method doesn't allow exit with the specified status. * @see java.lang.Runtime#exit(int) */ public static void exit(int status) { Runtime.getRuntime().exit(status); }注释中说的很清楚,这个方法是用来结束当前正在运行中的java虚拟机。如何status是非零参数,那么表示是非正常退出。
- System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西
- System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
- System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点: return是回到上一层,而System.exit(status)是回到最上层
3.示例
在一个if-else判断中,如果我们程序是按照我们预想的执行,到最后我们需要停止程序,那么我们使用System.exit(0),而System.exit(1)一般放在catch块中,当捕获到异常,需要停止程序,我们使用System.exit(1)。这个status=1是用来表示这个程序是非正常退出。
相关推荐
需要注意的是,`System.exit(0)`方法的使用需谨慎,因为它会立即终止整个Java虚拟机(JVM),在某些情况下可能不是最佳实践。在实际开发中,可以根据具体需求调整退出逻辑,例如只关闭当前活动或通过其他方式清理...
简单分析了linux下system函数的相关内容,具体内容如下 int __libc_system (const char *line) { ...exit 0) == 0; return do_system (line); } weak_alias (__libc_system,
In the module exit point, delete the elements from the linked list and return the free memory back to the kernel. Again, invoke the dmesg command to check that the list has been removed once the ...
return 0; } ``` #### 五、注意事项 虽然`system`函数非常有用,但它也有一些潜在的风险,特别是当从不可信源获取命令字符串时,可能导致安全问题。因此,在使用`system`函数时,请确保命令字符串是安全可靠的。 ...
} 有条件循环 private void button1_Click(object sender, System.EventArgs e) { int sum=0; int x=0; while ((sum) & (x)) { x++; sum+=x; } string s2=Convert.ToString(x); MessageBox.Show(s2); } 运行显示 14...
1. Introduction................................................................................................................5 2. The Players ...........................................................
this.panel1.Invalidate(new Rectangle(0,0,panel1.Width,100)); this.timer1.Enabled=false; this.paused=true; } private bool CreateBlock() { Point firstPos; Color color; if(this....
System.out.println(" example1> paySmartTest 0 A0000005551010"); System.out.println(" example2> paySmartTest 1 A000000555E010"); System.out.println(" example3> paySmartTest 1 A0000000041010"); ...
通过`#import`指令,Red/System可以从外部库导入函数,这里展示了如何调用C标准库中的`malloc`、`exit`和`printf`函数。 5. **低级CPU特性**: ```red p: system/pc value: system/stack/top system/stack/...
本文将详细介绍如何使用`System.IO.File`与`System.IO.FileInfo`中的`OpenText`和`AppendText`方法来读取和写入文本文件,并特别关注如何使用`UTF-8`编码。 #### 二、System.IO.File 和 System.IO.FileInfo ##### ...
Transaction{amount=5000.0, type='deposit'}, Transaction{amount=100.0, type='withdraw'}, Transaction{amount=2000.0, type='withdraw'}, Transaction{amount=3000.0, type='withdraw'}]} ``` Account 类的...
Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick If (Me.Visible = False) Then Me.Show() ...
import java.util.*; class MyException extends Exception{ String message; MyException(int age){ message=age+"年龄异常";... System.exit(0); } System.out.println(a.getAge()); } }
return (exitStatus == 0); } } ``` **解释** - `Runtime.getRuntime().exec(command)`用于启动新的进程。 - `getInputStream()`和`getErrorStream()`分别获取标准输出流和错误输出流。 - `waitFor()`用于等待...
实验1 三角形、梯形和圆形的类封装 9 实验2 实例成员与类成员 12 实验3 使用package语句与import语句 13 上机实践4 继承与接口 15 实验1 继承 15 实验2 上转型对象 17 实验3 接口回调 18 上机实践5 字符串、时间与...
System.exit(1); } } private ClassLoader createClassLoader(String name, ClassLoader parent) throws Exception { //CatalinaProperties解析$CATALINA_HOME\conf\catalina.properties, //并将...
System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" +...
在Java编程语言中,开发一个银行存取款的模拟系统是一项常见的练习,旨在提升开发者对面向对象编程的理解和实践能力。这个项目的核心在于设计和实现一个银行账户类(BankAccount),以及相关的存款(deposit)和取款...
1. **谨慎使用System.exit(0)**:一般情况下,不建议使用`System.exit(0)`来强制退出应用程序,因为这可能会导致数据丢失,而且Android系统会管理应用的生命周期,正常情况下应该由系统决定何时销毁应用程序。...
2.1.1 USEREXIT_KOMKBV1_FILL.................7 3.8.6 DOCUMENT FLOW...................................31 2.1.2 MASTER_IDOC_DISTRIBUTE..............7 3.8.7 MAINTAINING TRAILING SPACES WHEN DOWNLOADING TO...