예외는 예외적인 문제에 사용하라

Posted by epicdev Archive : 2011. 10. 3. 12:41
예외가 있다는 것은 즉 컨트롤의 이동이 즉각적이고 로컬하지 않다는 것을 말한다. 일종의 연쇄 goto 같은 것이다. 예외를 정상적인 처리 과정의 일부로 사용하는 프로그램은 고전적인 스파게티 코드의 가독성 문제와 관리성 문제를 전부 떠안게 된다. 이런 프로그램은 캡슐화 역시 깨트린다. 예외 처리를 통해 루틴과 그 호출자들 사이의 결합도가 높아져 버린다.

에러 처리기는 또 다른 대안이다

에러 처리기는 에러가 감지되었을 때 호출되는 루틴이다. 특정 부류의 에러를 처리하기 위해 어떤 루틴을 등록하게 된다. 해당하는 에러가 났을 때 그 처리기가 호출 될 것이다.

자바의 RMI 기능을 사용하는 클라이언트 서버 애플리케이션을 구현한다고 생각 해 보라. RMI가 구현 된 방식 때문에, 원격 루틴을 호출 할 때마다 RemoteException을 처리할 준비가 되어있어야 한다. 문제는 이런 예외를 처리하기 위해 코드를 추가하는 것은 지겨운 일이며, 로컬과 리모트 루틴 모두에서 작동하는 코드를 작성하기가 어렵다는 것이다. 한 가지 가능한 우회로는 원격이 아닌 클래스로 원격 객체를 wrapping 하는 것이다. 그러면 이 클래스는 에러 처리기 인터페이스를 구현하며, 원격 예외가 감지되었을 때 호출 될 루틴을 클라이언트 코드가 등록하도록 한다.
 
실용주의프로그래머
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 앤드류 헌트 (인사이트, 2007년)
상세보기

'Archive' 카테고리의 다른 글

리소스 할당과 해제의 균형과 예외  (0) 2011.10.03
리소스의 할당과 해제  (0) 2011.10.03
죽은 프로그램은 거짓말을 하지 않는다  (0) 2011.10.03
타인의 버그를 대하는 자세  (0) 2011.10.02
GUI와 쉘  (0) 2011.10.02