Whiteship's Note


[인텔리J] 예외 찍기 방지용 템플릿 수정

Good Tools : 2010.08.10 14:04



이렇게 간단한 템플릿 수정 만으로 예외 먹는 기본 템플릿 코드를 수정할 수 있다. 이클립스에도 try-catch 문 자동 생성시 catch 문에서 예외를 냠냠 하게 되어 있을텐데.. 그보다는 차라리 저렇게 RuntimeException으로 변화해서 던져주는게 더 낫다.

예외를 먹지 않으니까 예외가 발생한 지점 찾기도 좋을 뿐더러, RuntimeException으로 변환해주면 저 API를 사용하는 입장에서 잡아도 되고 안잡아도 되고 선택권이 생기니까 더 좋다. 머.. 잡아서 확실하게 예외를 어떻게 처리할 방법이 있다면 그렇게 처리하는게 더 좋겠지만 대부분은..흠냐..
저작자 표시
신고
top


이클립스의 기본 try-catch 탬플릿 비추

모하니?/Coding : 2008.04.26 09:59


Catched Exception이 하두 지저분해서 호출한 쪽에서 계속해서 던지거나 try-catch로 감싸는게 싫어서 던지는 쪽에서 그냥 퀵 픽스를 누르고 try-catch 블럭으로 감싸버리는 실수를 했습니다.

이클립스가 기본으로 제공하는 try-catch 블럭은 예외를 먹어버리는 악성코드입니다. 기능 구현에 집중하고 이런 세세한 부분을 신경 안 쓰다가는 디버깅하기 어려운 코드를 만들게 됩니다. 따라서 왠만하면 사용하지 맙시다. 아니면 template을 수정해서 throw new RuntimeExcepion(e)를 추가해줘도 되겠죠.

이미 알고 있는 내용이었는데도 이런 실수를 하다니...ㅠ.ㅠ

try {
// 위험한 코드
} catch(어떤 예외 e) {
    e.printStackTrace()
}

위의 코드가 이클립스가 제공해주는 코드인데 저러면 안 됩니다. 에러를 찍고 그냥 프로그램이 계속 돌아갑니다. 이게 뭐가 잘 못 된건데?? 라고 하신다면.. ㄷㄷㄷ.. 중요한 코드가 제대로 동작해야 하는데 그렇치 못한 상태에서 프로그램이 계속 돌면 분명 에러 찾기도 어렵고 문제가 있는지 조차 알 수가 없습니다.

그래서..

try {
// 위험한 코드
} catch(어떤 예외 e) {
throw new RuntimeException(e)
}

이렇게 하면 원래 에러를 가진 채 런타임 에러를 던지게 되고 만약 위험한 코드에서 정말 위험한 일이 발생하면 프로그램은 바로 에러를 뱉고 쓰러집니다. 에러를 바로 발견할 수 있고 위처럼 원래 예외 객체를 같이 넘겨줘야 nested excepton으로 원래 예외도 알 수 있습니다.


신고
top







티스토리 툴바