我想知道以下在Java中的区别
System.exit(0); System.exit(-1); System.exit(1);
什么时候我必须适当地使用上面的代码?
exit参数应该符合程序执行的好坏。这是一种来自较老的编程语言的遗传,在这些语言中,知道是否出现了问题以及出现了什么问题非常有用。
退出代码为
0
1
-1
whatever != 0
如果我是正确的,退出码过去只是正数(我的意思是在UNIX中),根据范围:
1-127
exit(n)
128-255
但我不认为你在Java上编码时应该在意,这只是一点信息。如果您计划让您的程序与标准工具交互,那么它很有用。
非零退出状态码,通常表示异常终止。如果n != 0,则由程序员对各种n应用意义。
n != 0
从https://docs.oracle.com/javase/7/docs/api/java/lang/System.html。
Zero =>一切正常
Zero
Positive =>我预期可能会出错出错(坏命令行,找不到文件,无法连接到服务器)
Positive
我完全没有预料到的事情出错了(系统错误-意外异常-外部强制终止,例如kill -9)
kill -9
(大于128的值实际上是负数,如果你认为它们是8位有符号二进制或双补码)
有一大堆好的这里是标准逃生代码
System.exit(system call)通过启动Java虚拟机的关闭序列来终止当前运行的Java虚拟机。实参用作状态码。
System.exit(system call)
按照惯例,非零状态码表示异常终止。
System.exit(0) or EXIT_SUCCESS; ---> Success System.exit(1) or EXIT_FAILURE; ---> Exception System.exit(-1) or EXIT_ERROR; ---> Error
更多信息请访问Java
在Unix和Linux系统上,0表示执行成功,1或更高的值表示执行失败。
这就是答案。
System.exit(0);// normal termination - Successful - zero System.exit(-1);//Exit with some Error System.exit(1);//one or any positive integer // exit with some Information message
< >强system . exit (0) 按照惯例,状态码为0表示终止成功
< >强system . exit (1) -这意味着终止失败,由于一些错误
正如其他人回答0意味着成功,否则。
如果您使用bat文件(窗口)System.exit(x)将生效。
System.exit(x)
代码java (myapp):
if (error < 2){ help(); System.exit(-1); } else{ doSomthing(); System.exit(0); }
}
bat文件:
java -jar myapp.jar if %errorlevel% neq 0 exit /b %errorlevel% rem -- next command if myapp is success --
class calc{ public static void main(String args[]) { int a, b, c; char ch; do{ Scanner s=new Scanner(System.in); System.out.print("1. Addition\n"); System.out.print("2. Substraction\n"); System.out.print("3. Multiplication\n"); System.out.print("4. Division\n"); System.out.print("5. Exit\n\n"); System.out.print("Enter your choice : "); ch=s.next().charAt(0); switch (ch) { case '1' : Addition chose1=new Addition(); chose1.add(); break; case '2' : Substraction chose2=new Substraction(); chose2.sub(); break; case '3' : Multiplication chose3= new Multiplication(); chose3.multi(); break; case '4' : Division chose4=new Division(); chose4.divi(); break; case '5' : System.exit(0); break; default : System.out.print("wrong choice!!!"); break; } System.out.print("\n--------------------------\n"); }while(ch !=5); }
在上面的代码中,当它的System.exit(0);当我按下案例5时,它正确退出,但当我使用System.exit(1);然后按case 5,它会错误退出当我尝试case 15时,它会正确退出我知道,当我们在参数中放入任何int时,它会指定,它会从那个位置取字符例如,如果我输入(4),它意味着从那个字符串中取第5个字符如果我输入(3),它意味着从那个输入字符串中取第4个字符
exit(0)通常用于表示成功终止。exit(1)或exit(-1)或任何其他非零值表示终止不成功。
exit(0)
exit(1)
exit(-1)
在system.exit()中放入的数字的差异在其他答案中解释了。但真正的区别在于System.exit()是返回给调用进程的代码。如果程序被操作系统调用,那么返回代码将告诉操作系统,如果system.exit()返回0,那么一切正常,但如果没有出错,那么在父进程中可能会有一些处理程序
请看下面的代码
public static void main(String[] args) { **String s=null;** try { System.out.println("Exit"); System.exit(1); **s.length();** }catch(Exception e) { System.out.println("Exception"); }finally { System.out.println("finally"); }}