Using try-catch block you handle the exception the way you want and probably you can re execute same job or can continue processing your code in same thread. But this is not case with UncaughtExceptionHandler. If you look at the javadoc for UncaughtExceptionHandler, uncaughtException() method will be executed when thread is abruptly terminated and you can't recover it. Probably you can use this method for auditing purpose. And may be after that your thread will be stopped.