The Java API documentation says:
void uncaughtException(Thread t, Throwable e)
Method invoked when the given thread terminates due to the given uncaught exception. Any exception thrown by this method will be ignored by the Java Virtual Machine.
So if you want the program to terminate on some exceptions and print their message/stacktrace you should do:
@Override
public void uncaughtException(Thread t, Throwable e) {
if (e instanceof RuntimeException) {
e.printStackTrace();
System.exit(1);
}
}