Our download-and-run program is built of multiple concurrent processes; one of these is Apollo. We have a parent Java process that invokes Apollo.
Our users won't understand Apollo's log messages. If Apollo encounters an error during startup (such as "java.net.BindException: Address already in use" or "java.io.IOException: File './data/lock' could not be locked."), we can assume it isn't going to start up.
We would love Apollo to exit with a non-zero status code in that case, so we can detect the error and report it to the user.
Is this reasonable?
I can think of two ways of attacking this issue that would work well for us:
1) Exit with non-zero status code when any component encounters an error during startup; OR
2) Exit with a non-zero status code when any component encounters an error and a special command-line flag has been set.