This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
When there is no handler for an exception and it has propagated all the way up the calling stack, the thread in which it is thrown will be killed, and the ThreadGroup of which that thread is a member will handle the error. In your case, the main ThreadGroup catches the error and writes it to System.err, then the main thread dies; thus your program ends. If you wanted to see how this works in another thread, just run your error-producing code in another thread. That thread will die, but your main will continue.