I’ve got a single threaded app that should set the DOS errorlevel to something non-zero if there is a problem. Is it better to throw a RuntimeException, or to use System.exit(nonzero)? I don’t need the stack trace, and I don’t expect this app to be extended/reused. What are the differences between these two options?
Share
Don’t throw an exception unless you really have an exceptional condition.
System.exit(int)is there for precisely this reason. Use it.EDIT: I think I may have misread your question. I thought you were asking, when you want to exit the JVM normally but signal that something did not quite go right, whether it is better to throw an exception or to use
System.exit.However, if the problem that occurs is something which is already indicated by a Java exception, it’s fine to just let that exception go unhandled. You don’t have to catch the exception and call
System.exit.If you have a choice of whether to throw an exception of your own or call
System.exit, think about whether the error condition is something that might conceivably be handled by some Java code that calls your method. If the error occurs directly in themainmethod, then there will probably never be a caller to handle the exception so you should probably callSystem.exit. Otherwise, it’s generally best to throw an exception – but notRuntimeException, you should probably use an exception type that appropriately represents the error you encountered. Write your own subclass ofRuntimeExceptionif necessary.