То, о чем вы пытаетесь спросить, это концепция барьера отказов, и правильный способ его реализации должен быть стандартом, определенным проектом, над которым вы работаете, или используемой вами структурой.
ЕслиВ вашем проекте есть политика регистрации всех исключений / ошибок и запрета печати чего-либо со стандартной ошибкой. Возможно, вы захотите использовать UncaughtExceptionHandler .
. В общем случае рекомендуется пойматьтолько экземпляры RuntimeException.
public void run(){
try{
//do something
}catch(RuntimeException e){
// log
}
}
Catching Exception
является слишком общим, поскольку язык Java требует, чтобы программы имели дело с проверенными исключениями.Улавливая даже проверенные исключения на вашем барьере ошибок, вы позволяете коду в блоке //do something
быть неаккуратным и не обрабатывать проверенные исключения.
Перехват Error
или Throwable
также обычно считается плохой практикойпоскольку ошибка обычно указывает на то, что JVM находится в состоянии, в котором она не может продолжать полноценно функционировать.
Вот хорошая (и несколько уместная) статья по обработке исключений: http://www.oracle.com/technetwork/articles/entarch/effective-exceptions-092345.html