프로그램이 실행 중 어떤 원인에 의해서 오작동 혹은 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다.
발생시점에 따라 크게 컴파일 에러와 런타임 에러로 나눌 수 있는 데 예외 처리는 런타임 에러 시 대비를 할 수 있도록 하는 것이다.
Exception 클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 (checked)
RuntimeException 클래스들 : 프로그래머의 실수로 발생하는 예외(unchecked)
Exception 클래스의 예외와 그 자손들(checked 예외)이 발생할 가능성이 있는 문장들에 대해서는 예외 처리를 해주지 않으면 컴파일 조차 되지 않는다.
예외 선언하기에는 크게 직접 처리하는 부분(try- catch)과 예외를 떠넘기는(throws) 2가지의 방법이 있다.
기본 예외 선언 법
try {
}catch (Exception e)
{
// 여기까진 필수
}finally {
// 예외 발생에 상관없이 무조건 거치는 곳
}
메서드에 예외 선언하기 메서드 호출 시 발생 가능한 예외를 호출하는 쪽에 알리는 것!
public int method() throws Exception {
//~~
}
사용자 정의 예외 처리
// queue is empty
public class EmptyQueueException extends RuntimeException {
public EmptyQueueException(){
super("Empty Queue");
}
}
// queue is full
public class OverflowQueueException extends RuntimeException{
public OverflowQueueException() {
super("Queue is Full");
}
}
참고 문헌 자바의 정석