예외 처리 (Exception Handling)
프로그램을 실행하다 보면 0으로 숫자를 나누거나, 없는 파일을 읽으려 하는 등 예상치 못한 오류(Exception)가 발생합니다. 아무런 조치를 취하지 않으면 프로그램은 즉시 강제 종료됩니다.
자바에서는 try-catch-finally 블록을 통해 예외를 우아하게 처리합니다. 위험한 코드는 try에 넣고, 오류가 터지면 catch에서 대신 수습하며, 오류 여부와 상관없이 무조건 실행해야 하는 정리 작업(파일 닫기 등)은 finally에 작성합니다.
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
try {
// 예외가 발생할 가능성이 있는 위험한 코드
System.out.println("배열의 5번째 요소 접근 시도...");
// 배열 크기는 3인데 5번째 인덱스에 접근하므로 여기서 오류 폭발! (ArrayIndexOutOfBoundsException)
System.out.println(numbers[4]);
System.out.println("이 코드는 실행되지 않습니다.");
} catch (ArrayIndexOutOfBoundsException e) {
// 특정 예외가 터졌을 때 수습하는 블록
System.out.println("경고: 배열의 범위를 벗어났습니다!");
System.out.println("에러 메시지: " + e.getMessage());
} catch (Exception e) {
// 그 외의 모든 예외를 잡는 최상위 Exception (안전망)
System.out.println("알 수 없는 오류 발생: " + e.getMessage());
} finally {
// 예외 발생 여부와 상관없이 100% 실행되는 블록 (보통 리소스 해제용)
System.out.println("finally: 예외 검사가 모두 종료되었습니다.");
}
System.out.println("프로그램이 강제 종료되지 않고 여기까지 정상적으로 도달했습니다.");
}
}