자바에서 예외(Exception)는 프로그램 실행 중에 발생할 수 있는 문제를 나타낸다. 예를 들어, 파일을 읽으려는데 그 파일이 존재하지 않거나, 사용자가 잘못된 형식의 데이터를 입력하는 경우 등이 있다. 예외 처리는 이러한 예외 상황을 잘 처리해서 프로그램이 비정상적으로 종료되는 것을 방지하고, 필요한 조치를 취할 수 있도록 하는 것을 말한다.
try-catch 구문
try-catch 구문은 예외 처리를 위한 가장 기본적인 구문이다.
try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType name) {
// 예외가 발생했을 때 실행할 코드
}
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // 이 줄에서 ArrayIndexOutOfBoundsException이 발생할 수 있음
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("인덱스 범위를 벗어났습니다!");
}
이 예제에서는 배열의 범위를 넘어서는 인덱스에 접근하려고 시도한다. 이는 ArrayIndexOutOfBoundsException 예외를 발생시키는데, catch 블록에서 이를 잡아내고 사용자에게 메시지를 출력한다.
다중 catch 블록
하나의 try 블록에 여러 개의 catch 블록을 사용할 수도 있다. 이는 다양한 종류의 예외를 다르게 처리하고자 할 때 유용하다.
try {
// 여러 종류의 예외가 발생할 수 있는 코드
} catch (ExceptionType1 e1) {
// ExceptionType1 처리
} catch (ExceptionType2 e2) {
// ExceptionType2 처리
}
finally 블록
try-catch 구문은 선택적으로 finally 블록을 포함할 수 있다. finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 코드를 담는다. 이는 주로 자원을 정리하거나 해제하는 코드를 포함하는 데 사용된다.
try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
// 예외 처리
} finally {
// 항상 실행되는 코드 (예: 파일 닫기, 자원 해제 등)
}