Giken Dev
반응형

 

Checked Exception 과 Unchecked Exception 은 무슨 차이인가요? (중요)

  • 자주 이야기하는 오답
    • Checked Exception 은 컴파일할 때 발생하고,
    • Unchecked Exception 은 런타임에 발생하는 예외로 알고 있습니다.
  • 올바른 답변 !
    • Checked Exception 은 컴파일할 때 예외에 대한 처리를 강제
    • Unchecked Exception 은 예외에 대한 처리를 강제하지 않습니다.  
  • 정의되어있지 않은, 새로운 예외를 정의해야할 때는
    • Unchecked Exception 을 상속받아서 쓴다 !
    • 대부분의 예외는 로직에서 해결할 수 없기 때문
    • Checke Exception을 쓰면, 던지는 예외라는 것이 외부에 알려짐→ 캡슐화가 깨짐
    • 예외를 컴파일 도중에 처리하고싶다면, Unchecked 도 try-catch 를 할 수 있다.

 

 

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ExceptionComparison {
    public static void main(String[] args) {
    
        // Checked Exception: 컴파일 시점에서 확인되는 예외
        try {
            File file = new File("nonexistentfile.txt");
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            // FileNotFoundException은 Checked Exception으로 예외 처리가 필요함
            System.err.println("파일을 찾을 수 없습니다.");
        }



        // Unchecked Exception (RuntimeException): 컴파일 시점에서 확인되지 않는 예외
        int[] numbers = { 1, 2, 3, 4, 5 };
        try {
            // 배열 범위를 벗어나는 인덱스에 접근하려고 할 때 ArrayIndexOutOfBoundsException이 발생
            int value = numbers[10];
        } catch (ArrayIndexOutOfBoundsException e) {
            // ArrayIndexOutOfBoundsException은 Unchecked Exception으로 예외 처리가 선택사항
            System.err.println("배열 인덱스가 잘못되었습니다.");
        }
    }
}

 

Checked Exception

  • FileNotFoundException은 파일을 찾을 수 없을 때 발생하며 Checked Exception에 해당합니다.
  • 파일을 읽을 예외 처리가 필요하며, try-catch 블록을 사용하여 처리합니다.

 

 

 

 

Unchecked Exception (RuntimeException)

  • ArrayIndexOutOfBoundsException 배열 범위를 벗어나는 인덱스에 접근하려고 발생하며 Unchecked Exception 해당합니다.
  • 예외 처리가 필요하지만 예외 처리를 강제하지 않으며, 선택사항입니다.
  • try-catch 블록을 사용하여 처리할 있지만, 컴파일러가 예외 처리를 요구하지 않습니다.

 

 

인턴 때 했었던 실무와 달리 개인 프로젝트에서는 exception 을 중요하게 다루지 않았다. 
예외 처리는 매우 중요한 개념이라고 한다.
반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!