프로그램의 정상적인 실행을 방해하는 조건이나 상태를 예외 (Exception) 라고 하며, 이러한 예외가 발생했을 때를 대비하여 작성해 놓은 처리 루틴을 수행하도록 하는 것을 예외 처리 (Exception Handling) 라고 한다.
예외가 발생했을 때 일반적인 처리 루틴은 프로그램을 종료시키거나 로그를 남기도록 하는 것이다.
C++, Ada, Java 자바스크립트와 같은 언어에는 예외 처리 기능이 내장되어 있으며, 그 외 언어에서는 필요한 경우 조건문을 이용해 예외 처리 루틴을 작성한다.
예외의 원인에는 컴퓨터 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근 등 다양하다.
Java는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java.lang 패키지에서 제공한다.
try {
// 예외가 발생할 가능성이 있는 코드
} catch (예외객체1 매개변수) {
// 예외객체1에 해당하는 예외 발생 시 처리 코드
} catch (예외객체2 매개변수) {
// 예외객체2에 해당하는 예외 발생 시 처리 코드
...
} catch (예외객체n 매개변수) {
// 예외객체n에 해당하는 예외 발생 시 처리 코드
} catch (Exception 매개변수) {
// 예외객체 1~n 에 해당하지 않는 예외 발생 시 처리 코드
} finally {
// 예외의 발생 여부와 관계 없이 무조건 처리되는 코드
}
일반적으로 예외가 발생한 경우에는 ‘try → catch → finally’ 문 순서로 진행되며, 예외가 발생하지 않은 경우에는 ‘try → finally’ 문 순서로 진행된다.
finally 문은 예외 발생과 관계없이 무조건 수행되는 블록이며, 생략이 가능하다.