Originally posted by R van Vliet:
Isn't it so that this only applies if an exception in the main thread is uncaught? If another thread generates an uncaught exception the program doesn't quit if memory serves.
In general, if an exception's not caught by any of the methods in a thread's current stackframe list, that thread will be terminated by the JVM. The JVM itself will only exit if all non-daemon threads have terminated.
Thus, you're correct in saying that an uncaught exception in a thread doesn't necessarily cause the whole JVM to exit. However, there's nothing special about the main thread; it can also be terminated by an uncaught exception without causing the JVM to exit, as long as at least one other non-daemon thread is still running.