일반적으로 Exception을 로깅한 다음 다시 throw하면 애플리케이션에 동일한 Exception을 여러번 로깅하는 길고 긴 로그가 생겨납니다. 멀티 스레드를 사용하는 응용 프로그램에서 이러한 유형의 로그 디버깅은 최악입니다. 왜냐면 다른 스레드에 있는 메시지가 Exception의 반복된 로깅과 throw에 뒤엉키기 때문입니다. Exceptions은 로그 처리되거나 rethrow 둘 중 하나만 되어야지 둘 다 되어선 안됩니다
규칙을 어긴 코드
catch (SQLException e) {
...
LOGGER.log(Level.ERROR, contextInfo, e);
throw new MySQLException(contextInfo, e);
}
규칙을 준수한 해결책
catch (SQLException e) {
...
throw new MySQLException(contextInfo, e);
}
또는
catch (SQLException e) {
...
LOGGER.log(Level.ERROR, contextInfo, e);
// 예외 처리
}
If you like SONARKUBE, don’t forget to give me a star.