Exceptions은 로그 처리되거나 rethrow 둘 중 하나만 되어야지 둘 다 되어선 안됩니다

 

일반적으로 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. :star2:

원문으로 바로가기

Star This Project