Это плохо, потому что e.printStackTrace()
не обязательно будет записывать в тот же файл журнала, что и logger.error()
, поэтому для согласованности вы должны использовать logger.error()
для всего.
Также e.printStackTrace()
ничего не делает для описания того, что происходило, что вызвало ошибку. Вы должны всегда включать сообщение журнала, которое сделает это понятным человеку, который читает файл журнала.
Если вы отправите объект исключения в качестве второго параметра, и вы получите трассировку стека в файле журнала, а также строку сообщения об исключении. Бедная душа, читающая файл журнала, будет рада получить эту информацию.
try {
doStuff();
}
catch (AException ae) {
// Send to the log file a message describing what we were doing,
// and what happened as a result
logger.error("ae happened, while attempting to do stuff, but that's okay", ae);
dealWithTheSituation();
}
catch (Exception e) {
logger.fatal("an unexpected error happened, while attempting to do stuff, cannot proceed", e);
abortAndCatchFire(); // Burn the evidence
}