상위 계층에서는 하위 계층에서 발생하는 예외를 반드시 받아서 상위 계층 추상화 수준에 맞는 예외로 바꿔서 던져야 한다. 이 숙어를 예외 변환이라 한다. 추상화 수준에 맞지 않는 예외를 던지게 되면, 메서드가 하는 일과 뚜렷한 관련성 없는 예외가 메서드에서 발생하기 때문이다. 추상화 수준이 낮은 곳에서 발생한 에외를 그대로 밖으로 전달하면 이러한 문제가 생긴다. 즉 추상화 수준이 높은 API가 오염되는 것이다. 



예외 연결은 예외 변환의 특별한 사례다. 하위 계층에서 발생한 예외 정보가 상위 계층 외를 발생시킨 문제를 디버깅하는 데 유용할 때 사용된다. 하위 계층에서 발생한 예외(원인)는 상위 계층 예외로 전달된다.


예외 연결을 사용하면 프로그램 안에서 예외의 원인에 접근할 수 있을 뿐 아니라, 최초에 발생한 예외의 스택 추적 정보를 상위 계층 예외에 통합할 수 있다. 하지만 예외변환 기법을 남용하면 안된다. 가능하다면 제일 좋은 방법은 하위 계층에서 예외가 생기지 않도록 하는 것이다. 하위 계층 메서드에 인자를 전달하기 전에 인자 유효성을 미리 검사하는 것도 좋은 방법이다.

요약

하위 계층에서 발생하는 예외를 막거나 처리할 수 없다면, 상위 계층에 보여주면 곤란한 예외는 예외 변환을 통해 처리하라는 것이다. 예외 연결 패턴을 활용하면 적절한 상위 계층 에외를 보여주면서도 하위 계층에서 실제로 발생한 문제까지 확인할 수 있다.



+ Recent posts