Skip to content
devSejong edited this page Oct 22, 2014 · 1 revision

4장 예외

정상적인 결과와 흐름을 보여주는 코드를 만들기도 버거운데 예외상황까지 처리해야 한다는 사실은 몹시 부담스럽다. 그래서 예외왕 관련된 코드는 자주 엉망이 되기나 무성의하게 만들어지기 쉽다. 때론 잘못된 예외처리 코드 때무넹 찾기 힘든 버그를 낳으 수도 있고, 생각지도 않았던 예외상황이 발생했을때 상상 이상으로 난처해질 수도 있다. 4장에서는 이와같은 예외처리와 관련된 접근 방벱에 대해서 알아본다.

예외를 처리할 때 반드시 지켜야할 핵심원칙은 한 가지다. 모든 예외는 적절하게 복구되던지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 하며, 예외를 잡아서 뭔가 조치를 취할 방법이 없다면 차라리 잡지 말아야 한다.

자바에서는 throw를 통해 발생시킬 수 있는 예외는 크게 3가지가 있다.

  • ** Error ** : 에러는 시스템에 뭔가 비정상적인 상황이 발생하였을 경우에 사용된다. 주로 자바 VM에서 발생한다. 따라서 시스템 레벨에서 특별한 작업을 하는게 아니라면, 애플리케이션에서는 이런 에러에 대한 처리는 신경쓰지 않아도 된다.
  • ** Exception + 체크예외 ** : 개발자들이 만든 애플리케이션 코드의 작업중에 예외상황이 발생했을 경우 사용된다. 체크 예외가 발생할 수 있는 메서드를 사용할 경우 반드시 예외를 처리하는 코드를 함께 작성해야 한다. 자바 언어와 JDK의 초기 설계자들은 체크 예외를 발생 가능한한 적용할려고 했었기 때문에 자바의 과거 버전에서 이어져 내려온 API의 경우에 사용 빈도가 높다.
  • ** RuntimeException + 언체크/런타임 예외 ** : java.lang.RuntimeException클래스를 상속한 예외들은 명시적인 예외처리를 강제하지 않기 때문에 언체크 예외라고 불린다. 런타임예외는 별도의try문이나 throw로 선언하지 않아도 된다.최근에 새로 등장하는 자바 표준 스펙의 API들은 예상 가능한 예외상황을 다루는 예외를 체크 예외로 만들지 않는 경향이 있다.

예외를 일반적으로 처리하는 방법은 아래와 같다.

  • 예외 복구 : 예외상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 것이다.
Clone this wiki locally