Christopher Benson-Manica wrote:
I would also "presume" that the application would return the
"successful" return value in that circumstance, but I'm specifically
wondering whether the JLS or something else that's relevant specifies
the behavior.
JLS 3 ?12 (Execution) is the relevant section. About the only thing it
says about the main method is that its signature must be `public static
void main(String[] args)' (using a vararg method is also permissible),
that it is invoked, and this portion at the end:
?12.8 Program Exit
A program terminates all its activity and exits when one of two things
happens:
* All the threads that are not daemon threads terminate.
* Some thread invokes the exit method of class Runtime or class
System and the exit operation is not forbidden by the security manager.
Nothing at all is made mention of return codes or anything similar. I
could write a JVM that always returned 42 and it would still conform to
the JLS.
The JVM spec is equally silent on the matter of exit codes.