자바에서 Chained Exceptions
2009/05/08 00:18알량한 자바 지식으로, 예외처리를 어댑터 패턴으로 묶는 중에, 기존의 예외를 어떻게 해야 버리지 않고 stack trace에 반영할 수 있을지 고민을 하다보니, Chained Exceptions라는 방법이 있더라.
위 글에 나온 코드를 간단히 바꿔서 붙여보면,
class MyException extends Exception{
public MyException() {
}
public MyException(String message){
super(message);
}
public MyException(Throwable throwable){
super(throwable);
}
public MyException(String message, Throwable throwable) {
super(message, throwable);
}
}
요러코롬 되어있으면, 아래처럼 wrapping하고,
try {
// blah blah
} catch (UnknownHostException e) {
throw new MyException("cannot open socket", e);
}
이 메소드를 사용하는 바깥에서는, MyException만을 받아주면 된다. MyException의 생성자를 저렇게 해놓으면, printStackTrace()를 찍었을 때에, 그 속에 있던 익셉션도 스택 트레이싱이 된다. 다른 메소드들은 전혀 오버라이딩 할 필요가 없다. 나는 잘못했었구나! 무식하면 손발이 고생이다. 엎어야겠다.
-- 이상한 나라의 종텐.

