Exception Handling

Rob Walling의 Exception Handling에 관한 글에서 Exception Handling의 두가지 기본적인 규칙이 마음에 들어 인용해본다.

  • Rule #1: If you can’t add helpful information to an error message, don’t catch the exception.
  • Rule #2: If you catch an exception, log it.

실제로 사람들은 너무나 바빠서 또는 게을러서 다음과 같은 짓을 한다.

} catch (YourOwnException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

이클립스의 기본 Exception Handling 코드 템플릿이다. 사람들은 그저 이클립스에 생성해주는 코드를 너무 신뢰하고 있든가, TODO 라인도 지워주기 어려울 만큼 바쁘거나 귀찮은거다.

만약 프로젝트를 시작하고 있다면 이클립스의 Exception Handling 코드 템플릿을 다음과 같이 정해주면 좋을 것이다.

} catch (YourOwnException e) {
logger.error("failed to do SOMETHING", e);
throw new RuntimeException(e);
}

“Exception Handling”에 대한 2개의 생각

  1. Exception Handling 코드 템플릿에 2번라인은 빼는게 좋지 않을까요? exception 하나에 하나 이상의 log가 찍힐 많은 가능성을 내포하고 있습니다.

  2. 네, 맞는 말씀입니다. 제 의도는 로거가 지정한 장소에 로그가 출력되도록 하는 것인데, catch 되지 않은 exception은 그냥 stderr로 가버리니까 저렇게 한 것인데… catch 되지 않은 exception에 대한 동작을 override할 필요도 있겠네요.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.