minstudio

예외 처리 (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("프로그램이 강제 종료되지 않고 여기까지 정상적으로 도달했습니다.");
    }
}
예외 처리 (Exception Handling) | Minstudio