Reputation: 27199
I'd like to know the difference between the following in Java
System.exit(0);
System.exit(-1);
System.exit(1);
When do I have to use the above code appropriately?
Upvotes: 309
Views: 485758
Reputation: 3
Look at the code below
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");
}}
Here exit(0) : Generally used to indicate successful termination. exit(1) or exit(-1) or any other non-zero value – Generally indicates unsuccessful termination. No matter what you pass as an argument, the control flow always comes out and doesn't print anything next, either it may be catch block as s.length will throw exception here or finally
Upvotes: 0
Reputation: 395
System.exit(0) by convention, a zero status code indicates successful termination.
System.exit(1) -It means termination unsuccessful due to some error
Upvotes: 1
Reputation: 1127
exit(0)
generally used to indicate successful termination. exit(1)
or exit(-1)
or any other non-zero value indicates unsuccessful termination in general.
Upvotes: 7
Reputation: 985
the difference of the numbers put in system.exit() is explained in other answers. but the REAL DIFFERENCE is that System.exit() is a code that gets returned to the invoking process. If the program is being invoked by the Operating system then the return code will tell the OS that if system.exit() returned 0 than everything was ok but if not something went wrong, then there could be some handlers for that in the parent process
Upvotes: 1
Reputation: 1
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);
}
}
In the above code when its System.exit(0); and when i press case 5 it exits properly but when i use System.exit(1); and press case 5 it exits with error and again when i try with case 15 it exits properly by this i got to know that, when ever we put any int inside argument it specifies that, it take the character from that position i.e if i put (4) that it means take 5th character from that string if its (3) then it means take 4th character from that inputed string
Upvotes: -10
Reputation: 74571
System.exit(system call)
terminates the currently running Java virtual machine by initiating its shutdown sequence. The argument serves as a status code.
By convention, a nonzero status code indicates abnormal termination.
System.exit(0) or EXIT_SUCCESS; ---> Success
System.exit(1) or EXIT_FAILURE; ---> Exception
System.exit(-1) or EXIT_ERROR; ---> Error
Read More at Java
On Unix and Linux systems, 0
for successful executions and 1
or higher for failed executions.
Upvotes: 59
Reputation: 5742
A good gotcha is any error code > 255 will be converted to error code % 256. One should be specifically careful about this if they are using a custom error code > 255 and expecting the exact error code in the application logic. http://www.tldp.org/LDP/abs/html/exitcodes.html
Upvotes: 2
Reputation: 5316
As others answer 0
meaning success, otherwise.
If you using bat file (window) System.exit(x)
will effect.
Code java (myapp):
if (error < 2){
help();
System.exit(-1);
}
else{
doSomthing();
System.exit(0);
}
}
bat file:
java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
Upvotes: 0
Reputation: 3303
Here is the answer.
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
Upvotes: 4
Reputation: 10221
A non-zero exit status code, usually indicates abnormal termination. if n != 0
, its up to the programmer to apply a meaning to the various n's.
From https://docs.oracle.com/javase/7/docs/api/java/lang/System.html.
Upvotes: 11
Reputation: 133567
The parameter of exit should qualify if the execution of the program went good or bad. It's a sort of heredity from older programming languages where it's useful to know if something went wrong and what went wrong.
Exit code is
0
when execution went fine;1
, -1
, whatever != 0
when some error occurred, you can use different values for different kind of errors.If I'm correct exit codes used to be just positive numbers (I mean in UNIX) and according to range:
1-127
are user defined codes (so generated by calling exit(n)
)128-255
are codes generated by termination due to different unix signals like SIGSEGV or SIGTERMBut I don't think you should care while coding on Java, it's just a bit of information. It's useful if you plan to make your programs interact with standard tools.
Upvotes: 271
Reputation: 4867
Zero
=> Everything Okay
Positive
=> Something I expected could potentially go wrong went wrong (bad command-line, can't find file, could not connect to server)
Negative
=> Something I didn't expect at all went wrong (system error - unanticipated exception - externally forced termination e.g. kill -9
)
(values greater than 128 are actually negative, if you regard them as 8-bit signed binary, or twos complement)
There's a load of good standard exit-codes here
Upvotes: 142