본문 바로가기
Java Study

자바(JAVA)의 예외(Exception)

by xogns93 2024. 7. 19.

자바에서 예외(Exception)는 크게 두 가지로 분류됩니다:

체크드 예외(Checked Exception)와 언체크드 예외(Unchecked Exception). 여기서는 체크드 예외에 대해 설명하겠습니다.

 

체크드 예외 (Checked Exception)

체크드 예외는 컴파일러가 예외 처리를 강제하는 예외입니다. 이는 프로그램 실행 중에 발생할 가능성이 있는 예외 상황을 미리 예측하고, 이에 대한 처리를 명시적으로 작성하도록 합니다. 체크드 예외는 Exception 클래스의 서브클래스이며, RuntimeException 클래스의 서브클래스는 아닙니다.

특징

  1. 컴파일 시 검사:
    • 체크드 예외는 컴파일러에 의해 검사됩니다. 즉, 컴파일 시에 체크드 예외가 제대로 처리되지 않으면 컴파일 오류가 발생합니다.
  2. 명시적 예외 처리 요구:
    • 메서드에서 체크드 예외가 발생할 가능성이 있는 경우, 해당 예외를 try-catch 블록으로 처리하거나 메서드 시그니처에 throws 키워드를 사용하여 호출자에게 예외를 던져야 합니다.
  3. 일반적인 체크드 예외:
    • IOException, SQLException, ClassNotFoundException 등이 있습니다.

 

체크드 예외 처리 (try-catch)

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            System.out.println("An IOException was caught: " + e.getMessage());
        }
    }
}

 

 

체크드 예외 선언 (throws)

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            readFile("example.txt");
        } catch (IOException e) {
            System.out.println("An IOException was caught: " + e.getMessage());
        }
    }

    public static void readFile(String filename) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

 

설명

  1. try-catch 블록:
    • try 블록 내에서 파일을 읽는 코드를 작성하고, catch 블록에서 IOException을 처리합니다.
  2. throws 키워드:
    • readFile 메서드는 throws IOException을 사용하여, 호출자에게 예외가 발생할 가능성을 알립니다.
    • main 메서드에서는 readFile을 호출하고, 발생할 수 있는 IOException을 try-catch 블록으로 처리합니다.

 

체크드 예외 vs 언체크드 예외

  • 체크드 예외 (Checked Exception):
    • 컴파일러가 예외 처리를 강제합니다.
    • 예외 처리 코드가 없는 경우 컴파일 오류가 발생합니다.
    • 예시: IOException, SQLException, ClassNotFoundException.
  • 언체크드 예외 (Unchecked Exception):
    • 런타임 예외로, 컴파일러가 예외 처리를 강제하지 않습니다.
    • 예외 처리 코드가 없어도 컴파일이 됩니다.
    • 주로 프로그래밍 오류를 나타냅니다.
    • 예시: NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException.

 

요약

  • 체크드 예외는 컴파일러에 의해 검사되며, 예외 처리가 명시적으로 요구됩니다.
  • 체크드 예외는 일반적으로 외부 환경에 의존하는 작업(파일 입출력, 데이터베이스 접근 등)에서 발생할 수 있습니다.
  • 예외 처리는 try-catch 블록을 사용하거나 메서드 시그니처에 throws 키워드를 사용하여 호출자에게 예외를 전달합니다.
  • 체크드 예외를 적절히 처리함으로써 프로그램의 안정성과 신뢰성을 높일 수 있습니다.

'Java Study' 카테고리의 다른 글

바운딩과 와일드카드의 차이  (0) 2024.08.19
List와 ArrayList  (0) 2024.08.16
LinkedList  (0) 2024.07.18
Collection 인터페이스  (0) 2024.07.18
HashSet과 HashMap  (0) 2024.07.18