프로그램 오류
-
컴파일 에러
-
런타임 에러
-
논리적 에러
-
에러(error)
- 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
-
예외(exception)
- 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외 클래스의 계층구조
- Exception 클래스
- 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
- RuntimeException 클래스
예외처리 — try-catch문
- 예외처리
- 예기치 못한 예외의 발생에 대비한 코드를 작성
- 예외의 발생으로 인한 실행중인 프로그램의 갑작스런 비정상 종료를 막고 정상적인 실행상태를 유지할 수 있도록 함
- 발생한 예외 처리 못하면 프로그램은 비정상적으로 종료
try {
// 예외가 발생할 가능성이 있는 문장
} catch (Exception1 e1) {
// Exception1이 발생했을 경우 이를 처리하기 위한 문장
} catch (Exception2 e2) {
// Exception2가 발생했을 경우 이를 처리하기 위한 문장
}
하나의 try 블럭 다음에는 여러 종류의 예외를 처리할 수 있도록 하나 이상의 catch 블럭이 옴
발생한 예외의 종류와 일치하는 catch 블럭이 없으면 예외 처리되지 X
- try 블럭 내에서 예외 발생
- 발생한 예외와 일치하는 catch 블럭 있는지 확인
- 일치하는 catch 블럭 찾게 되면 그 catch 블럭 내의 문장들을 수행하고 전체 try-catch문을 빠져나가서 그 다음 문장을 계속해서 수행 / 만약 일치하는 catch 블럭 찾지 못하면 예외 처리되지 못함
- try 블럭 내에서 예외 발생 X
- catch 블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행을 계속 함