[Java 문법] 예외처리 (try-catch)

mong k·2026년 4월 1일

1. 예외처리란?

프로그램 실행 시 예상치 못한 입력이나 상황으로 오류가 발생한다. 이때, 프로그램이 종료되지 않고 정상적으로 동작하도록 처리하는 방법을 예외처리라고 한다.

2. 예외처리 필요성

  • 예를 들어 숫자를 입력 받는 코드가 있다고 가정하자.
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
  • 여기서 사용자가 숫자가 아닌 값을 입력하면 프로그램은 바로 종료된다.

3. 예외의 종류

3.1 컴파일 예외 (Checked Exception)

- 컴파일 단계에서 확인되는 예외

- 반드시 처리해야 함 (try-catch or throws)

- 처리하지 않으면 컴파일 자체가 되지 않음

3.1.1 IOException

FileReader file = new FileReader("test.txt");
  • 파일이 없거나 경로가 틀리면 IOException 발생
  • 네트워크 서버 연결 실패 하면 IOException 발생

3.1.2 SQLException

  • DB 작업할 때 발생
  • 잘못된 SQL (오타)
  • DB 연결 실패 (DB 꺼져 있으면 발생)
    try {
    Connection conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
    System.out.println("DB 연결 실패");
}

3.2 런타임 예외 (Runtime Exception)

- 실행 중 발생하는 예외

- 컴파일은 정상적으로 되지만 실행 중 오류 발생

- 개발자가 직접 방어해야 함

3.2.1 InputMismatchException

  • Scanner 입력 오류

    int num = sc.nextInt(); // 문자 입력 시 오류 발생

3.2.2 NullPointerException

  • null 객체 접근

    String str = null;
    str.length(); // 오류

3.2.3 ArithmeticException

  • 0으로 나누기

    int a = 10 / 0;

3.2.4 ArrayIndexOutOfBoundsException

  • 배열 범위 초과

    int[] arr = new int[3];
    arr[5] = 10;

3.2.5 IllegalArgumentException

  • 잘못된 값 입력

    throw new IllegalArgumentException("잘못된 입력");

4. Try-catch 기본 구조

try {
// 예외 발생 가능 코드
} catch (Exception e) {
// 예외 발생 시 처리
}

5. 예외 처리 시 주의할 점

5.1 catch (Exception e)는 권장x

try {
    int num = sc.nextInt();
} catch (Exception e) {
    System.out.println("오류 발생");
}
  • 모든 예외를 한 번에 잡을 수 있어 편하지만
    어떤 오류가 발생했는지 구분 불가

  • 디버깅 어려움

  • 예상하지 못한 예외까지 처리

5.2 권장 방법 (구체적인 예외 사용)

try {
    int num = sc.nextInt();
} catch (InputMismatchException e) {
    System.out.println("숫자를 입력해주세요.");
}

0개의 댓글