[Java] Checked & Unchecked exception 의 차이에 대하여

2023. 9. 22. 03:47·Programming Language/Java
반응형

 

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 을 중요하게 다루지 않았다. 
예외 처리는 매우 중요한 개념이라고 한다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'Programming Language > Java' 카테고리의 다른 글

[Java] Optional - nullPointException을 잘 다뤄보자.  (0) 2023.09.25
[Java] Object 클래스와 주요 메서드 - equals(), hashCode(), toString()  (0) 2023.09.22
[Java] Enum을 예제로 알아보자.  (0) 2023.09.22
[Java] 추상클래스(abstract class)와 인터페이스(interface)의 차이점과 예제  (0) 2023.09.22
[Java] 객체지향 프로그래밍으로 개발해야하는 이유.  (0) 2023.09.22
'Programming Language/Java' 카테고리의 다른 글
  • [Java] Optional - nullPointException을 잘 다뤄보자.
  • [Java] Object 클래스와 주요 메서드 - equals(), hashCode(), toString()
  • [Java] Enum을 예제로 알아보자.
  • [Java] 추상클래스(abstract class)와 인터페이스(interface)의 차이점과 예제
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    SQL고득점키트
    SQL
    2753
    프로그래머스
    C
    1330
    2588
    9498
    평년
    DB
    윤년
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[Java] Checked & Unchecked exception 의 차이에 대하여
상단으로

티스토리툴바