public class ErrorHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.err.printf("Thread ID : %s%n", t.getId()); System.err.printf("Message : %s%n", e.getMessage()); } public static void main(String[] args) { // register handler Thread.setDefaultUncaughtExceptionHandler(new ErrorHandler()); // throw error throw new RuntimeException("My exception!"); } }