어제 오늘 내일

[Java] 예외(Exception)와 오류(Error) 차이 본문

IT/Java

[Java] 예외(Exception)와 오류(Error) 차이

hi.anna 2025. 12. 31. 08:52

Java에서 예외(Exception)오류(Error)는 모두 프로그램 실행 중 발생하는 문제를 표현하지만,
두 개념은 원인·처리 가능 여부·목적이 완전히 다릅니다.
예외는 개발자가 적절히 처리할 수 있지만, 오류는 시스템적 문제로 처리하기 거의 불가능합니다.

 

1. 예외(Exception)란?

예외는 프로그램 실행 중 발생할 수 있는 문제 상황으로,
개발자가 코드로 예측하고 처리할 수 있는 오류입니다.

예:

  • 파일이 존재하지 않음
  • 배열 인덱스 범위 초과
  • null 접근
  • 네트워크 연결 실패

예외는 적절하게 try-catch로 처리할 수 있습니다.

예제

try {
    int result = 10 / 0; 
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");
}

특징

  • 개발자가 처리 가능
  • 예측 가능한 문제
  • Exception 클래스 계층에 포함

 

2. 오류(Error)란?

오류는 JVM 실행 자체에 문제가 생겨 발생하는 심각한 시스템 오류로,
개발자가 처리할 수 없는 경우가 대부분입니다.

예:

  • OutOfMemoryError (메모리 부족)
  • StackOverflowError (재귀 호출 과다)
  • VirtualMachineError (JVM 문제)

오류는 시스템 수준 문제이므로 try-catch로 해결할 수 없습니다.

예제

public class Test {
    public static void main(String[] args) {
        recurse(); // 무한 재귀 호출
    }

    static void recurse() {
        recurse(); 
    }
}

출력 예:

Exception in thread "main" java.lang.StackOverflowError

특징

  • 개발자가 직접 해결 불가
  • JVM 또는 시스템 문제
  • Error 클래스 계층에 포함

 

3. Exception과 Error의 계층 구조

Throwable
 ├── Exception        → 처리 가능(try-catch)
 │     ├── Checked Exception
 │     └── Unchecked Exception(RuntimeException)
 └── Error            → 시스템 오류, 처리 불가

✔ Exception

프로그램 흐름을 제어하기 위해 사용될 수 있는 "예측 가능한 문제"

✔ Error

JVM이 더 이상 정상 실행하기 어려운 문제 → 복구 불가

 

4. Checked Exception vs Unchecked Exception

Exception 내부에서도 두 가지로 나뉩니다.

✔ Checked Exception (컴파일 시점 체크)

  • 반드시 처리해야 함
    예: IOException, SQLException
try {
    Thread.sleep(1000);
} catch (InterruptedException e) { }

✔ Unchecked Exception (RuntimeException 계열)

  • 코드 실수로 발생
    예: NullPointerException, IndexOutOfBoundsException
String s = null;
s.length(); // NullPointerException

 

 

5. 예외 vs 오류 비교 정리

구분 예외(Exception) 오류(Error)
발생 원인 개발 중 예측 가능한 문제 JVM, 하드웨어 등 시스템 문제
처리 가능 여부 처리 가능 (try-catch) 처리 어려움, 복구 불가
대표 클래스 Exception, RuntimeException OutOfMemoryError, StackOverflowError
목적 안정적 프로그램 흐름 유지 시스템 경고, 비정상 종료 방지 불가

 

  • 예외는 처리, 오류는 회피 대상

 

6. 요약

  • Exception: 개발자가 예측하고 처리 가능한 문제
  • Error: 시스템 문제로 처리가 어렵고 복구 불가
  • Exception은 프로그램 흐름을 안전하게 유지하기 위한 장치
  • Error는 발생하면 프로그램이 정상 동작하기 어려운 심각한 상황🔖 태그

 

반응형
Comments