알량한 자바 지식으로, 예외처리를 어댑터 패턴으로 묶는 중에, 기존의 예외를 어떻게 해야 버리지 않고 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()를 찍었을 때에, 그 속에 있던 익셉션도 스택 트레이싱이 된다. 다른 메소드들은 전혀 오버라이딩 할 필요가 없다. 나는 잘못했었구나! 무식하면 손발이 고생이다. 엎어야겠다.

-- 이상한 나라의 종텐.


« Previous : 1 : ... 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : ... 279 : Next »