Skip to main content

[Java] 예외 클래스 계층도


1. 계층도

image.pnghttps://interviewnoodle.com/exception-in-java-89a0b41e0c45

image.png


java.lang.Object
  └── java.lang.Throwable
        ├── java.lang.Error          // 시스템 레벨 심각한 오류 (복구 불가)
        │     ├── OutOfMemoryError
        │     ├── StackOverflowError
        │     └── ...
        │
        └── java.lang.Exception      // 애플리케이션에서 처리 가능한 예외
              ├── Checked Exception (컴파일 시 처리 강제)
              │     ├── IOException
              │     │     ├── FileNotFoundException
              │     │     └── EOFException
              │     ├── SQLException
              │     ├── ParseException
              │     └── ClassNotFoundException
              │
              └── Unchecked Exception (컴파일러가 처리 강제 X)
                    └── java.lang.RuntimeException
                          ├── NullPointerException
                          ├── IndexOutOfBoundsException
                          │     ├── ArrayIndexOutOfBoundsException
                          │     └── StringIndexOutOfBoundsException
                          ├── ArithmeticException
                          ├── IllegalArgumentException
                          │     └── NumberFormatException
                          ├── ClassCastException
                          └── IllegalStateException
  • 모든 예외 클래스는 Throwable을 상속함
  • Error는 처리 안 하고 무시하거나 종료하게 두는 경우가 많음
  • RuntimeException은 로직 오류에서 주로 발생함 (예외 처리를 강제하지 않음)

계층

설명

대표 클래스

Throwable

모든 예외/에러의 최상위 클래스

-

Error

JVM 자체 문제, 메모리 부족 등 → 복구 불가

OutOfMemoryError, StackOverflowError

Exception

일반적인 예외 상황 → 개발자가 처리

-

Checked Exception

반드시 try-catch or throws 필요

IOException, SQLException

Unchecked Exception

런타임 예외, 선택적 처리

NullPointerException, ArithmeticException


2. 정리 잘 된 블로그