Checked Exception vs Unchecked Exception

동동주·2025λ…„ 11μ›” 27일

jscode μžλ°” μŠ€ν„°λ””

λͺ©λ‘ 보기
2/6

βœ… Java의 Checked Exception vs Unchecked Exception

1. Checked Exception

πŸ“Œ κ°œλ…

  • 컴파일 μ‹œμ μ— λ°˜λ“œμ‹œ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μ˜ˆμ™Έ
  • κ°œλ°œμžκ°€ try-catch λ˜λŠ” throws둜 μ˜ˆμ™Έλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό 함
  • μ˜ˆμ™Έ 처리λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ 컴파일 였λ₯˜ λ°œμƒ!
  • 주둜 μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Ό ν†΅μ‹ ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” μ˜ˆμ™Έ

➑ 예: 파일 I/O, DB μ—°κ²°, λ„€νŠΈμ›Œν¬ 톡신 λ“± 예츑 κ°€λŠ₯ν•œ μ‹€νŒ¨ κ°€λŠ₯성이 μ‘΄μž¬ν•˜λŠ” 경우

πŸ“Œ λŒ€ν‘œμ μΈ Checked Exception

  • IOException β†’ 파일 μž…μΆœλ ₯ μ‹€νŒ¨
  • SQLException β†’ DB μž‘μ—… μ‹€νŒ¨
  • ClassNotFoundException β†’ 클래슀 λ‘œλ“œ μ‹€νŒ¨
  • InterruptedException β†’ μŠ€λ ˆλ“œ μΈν„°λŸ½νŠΈ

πŸ“Œ 예제 μ½”λ“œ

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            FileReader fr = new FileReader(file); // FileNotFoundException λ°œμƒ κ°€λŠ₯
        } catch (IOException e) { // λ°˜λ“œμ‹œ μ²˜λ¦¬ν•΄μ•Ό 함
            System.out.println("νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: " + e.getMessage());
        }
    }
}

2. Unchecked Exception (Runtime Exception)

πŸ“Œ κ°œλ…

  • λŸ°νƒ€μž„(Runtime)에 λ°œμƒν•˜λŠ” μ˜ˆμ™Έ
  • 컴파일 λ‹¨κ³„μ—μ„œ μ˜ˆμ™Έ 처리λ₯Ό κ°•μ œν•˜μ§€ μ•ŠμŒ
  • λŒ€λΆ€λΆ„ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ 논리적 μ‹€μˆ˜ λ•Œλ¬Έμ— λ°œμƒ

➑ 예: 잘λͺ»λœ 인덱슀 μ ‘κ·Ό, null μ ‘κ·Ό, 잘λͺ»λœ ν˜•λ³€ν™˜ λ“±

πŸ“Œ λŒ€ν‘œμ μΈ Unchecked Exception

  • NullPointerException β†’ null 객체 μ°Έμ‘°
  • ArrayIndexOutOfBoundsException β†’ λ°°μ—΄ 인덱슀 초과
  • ArithmeticException β†’ 0으둜 λ‚˜λˆ„κΈ°
  • ClassCastException β†’ 잘λͺ»λœ λ‹€μš΄μΊμŠ€νŒ…

πŸ“Œ 예제 μ½”λ“œ

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        String text = null;
        System.out.println(text.length()); // NullPointerException λ°œμƒ
    }
}

3. Checked vs Unchecked Exception 비ꡐ

ꡬ뢄Checked ExceptionUnchecked Exception
μ˜ˆμ™Έ μ²˜λ¦¬λ°˜λ“œμ‹œ μ²˜λ¦¬ν•΄μ•Ό ν•¨μ²˜λ¦¬ κ°•μ œ μ—†μŒ
λ°œμƒ μ‹œμ μ»΄νŒŒμΌ μ‹œ κ²€μ‚¬λŸ°νƒ€μž„μ— λ°œμƒ
주된 원인외뢀 ν™˜κ²½ λ¬Έμ œν”„λ‘œκ·Έλž˜λ¨Έ μ‹€μˆ˜ λ˜λŠ” 둜직 문제
λŒ€ν‘œ μ˜ˆμ‹œIOException, SQLExceptionNullPointerException, ArithmeticException

4. μ–Έμ œ Checked vs Uncheckedλ₯Ό μ‚¬μš©ν•΄μ•Ό ν• κΉŒ?

πŸ”Ή Checked Exception을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우

  • μ‹€νŒ¨ κ°€λŠ₯성이 μΆ©λΆ„νžˆ 예츑 κ°€λŠ₯ν•˜κ³ 
  • λ°˜λ“œμ‹œ κ°œλ°œμžκ°€ μ˜ˆμ™Έ 처리λ₯Ό ν•΄μ•Ό ν•˜λŠ” 경우
  • μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Όμ˜ I/O μž‘μ—…: 파일, λ„€νŠΈμ›Œν¬, DB λ“±

➑ 예: 파일이 없을 μˆ˜λ„ μžˆμœΌλ―€λ‘œ λ°˜λ“œμ‹œ μ˜ˆμ™Έ 처리 ν•„μš”

πŸ”Ή Unchecked Exception을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우

  • 둜직 였λ₯˜λ‘œ 인해 λ°œμƒν•  κ°€λŠ₯성이 큰 경우
  • κ°œλ°œμžκ°€ 직접 λ°©μ§€ν•˜λ„λ‘ μœ λ„ν•˜λŠ” 것이 μ’‹μŒ
  • β€œνšŒλ³΅ κ°€λŠ₯ν•œ μ˜ˆμ™Έβ€κ°€ μ•„λ‹Œ 상황

➑ 예: null 체크 λˆ„λ½, 잘λͺ»λœ 인덱슀 μ ‘κ·Ό


0개의 λŒ“κΈ€