자바의 Error, Exception에 대해 알아보려 한다.
이 글을 쓰는 이유는 원래 Runtime Exception에 대해 설명하기 위해서이다.

RuntimeException (런타임 예외)은 반드시 예외 처리를 하지 않아도 된다.
자바에서는 예외를 두 가지로 나눈다.
- Checked Exception (검사 예외): Exception을 상속하지만 RuntimeException은 상속하지 않은 예외들 → 반드시 try-catch나 throws로 처리해야만 한다.
- Unchecked Exception (비검사 예외): RuntimeException을 상속한 예외들 → 컴파일러가 강제하지 않아서 꼭 처리하지 않아도 된다.
// RuntimeException 계열 (Unchecked) - 꼭 처리 안 해도 됨
throw new NullPointerException();
throw new IllegalArgumentException();
이런 건 명시적으로 try-catch 안 써도 컴파일 에러가 나지 않는다.
반면
// Checked Exception 예시 - 반드시 처리 필요
throw new IOException(); // 컴파일 에러남: try-catch 하거나 throws 해야 함
이런 건 처리 안 하면 에러가 난다.
요약하면, 즉 RuntimeException은 필수로 예외처리 안 해도 된다.
다만, 필요에 따라 try-catch로 잡아서 처리하는 게 프로그램 품질에는 좋을 수는 있다.
여기서 추가로 Error와 Exception의 차이에 대해 알아보자.
Throwable 클래스
: Java에서 모든 오류와 예외의 최상위 부모 클래스다. 에러든 예외든 다 이 클래스를 상속받는다.
Error 클래스
: 심각한 문제를 나타내는 클래스.
시스템 자체에 문제가 생긴 경우(메모리 부족 같은) 발생한다. → 개발자가 신경 쓰지 않는 경우가 많다.
Exception 클래스
: 프로그램이 잡아서 처리할 수 있는 문제를 나타낸다.
Exception 중에서도 RuntimeException을 제외한 것들은 checked exception이라고 부른다.
개발자가 직접 필요한 예외 클래스를 만들어서 쓸 수도 있다. (예: 주문 실패 예외, 회원가입 실패 예외 등)
RuntimeException 클래스
: 프로그램 실행 중에 예상치 못하게 발생할 수 있는 문제를 나타낸다.
이건 checked exception처럼 꼭 try-catch 안 해도 되고, 필요하면 잡아서 처리한다.
한 문장으로 요약하면
Throwable: 모든 오류/예외의 조상님
Error: 시스템이 망가질 때 생김 (개발자가 처리 X)
Exception: 프로그램이 처리할 수 있는 문제 (개발자가 필수적으로 try-catch)
RuntimeException: 실행 중 터질 수 있는 문제 (try-catch 해도 되고 안 해도 됨)
'Java' 카테고리의 다른 글
[Java] JVM의 작동 원리 (5) | 2025.05.13 |
---|---|
[Java] 자바 컴파일하기, JDK, bin, java, javac 확장자 뜻 (1) | 2025.04.18 |
[Java] JDK, JRE, JVM 개념 & 차이 등 정리 (4) | 2025.04.02 |
[Eclipse] 이클립스에서 메서드 구현부를 바로 찾아가도록 설정하는 방법 (4) | 2025.03.17 |
[Java] 자바 주석 종류: Javadoc 주석(/** */)과 멀티라인 주석(/* */의 차이점 (7) | 2025.03.06 |
자바의 Error, Exception에 대해 알아보려 한다.
이 글을 쓰는 이유는 원래 Runtime Exception에 대해 설명하기 위해서이다.

RuntimeException (런타임 예외)은 반드시 예외 처리를 하지 않아도 된다.
자바에서는 예외를 두 가지로 나눈다.
- Checked Exception (검사 예외): Exception을 상속하지만 RuntimeException은 상속하지 않은 예외들 → 반드시 try-catch나 throws로 처리해야만 한다.
- Unchecked Exception (비검사 예외): RuntimeException을 상속한 예외들 → 컴파일러가 강제하지 않아서 꼭 처리하지 않아도 된다.
// RuntimeException 계열 (Unchecked) - 꼭 처리 안 해도 됨 throw new NullPointerException(); throw new IllegalArgumentException();
이런 건 명시적으로 try-catch 안 써도 컴파일 에러가 나지 않는다.
반면
// Checked Exception 예시 - 반드시 처리 필요 throw new IOException(); // 컴파일 에러남: try-catch 하거나 throws 해야 함
이런 건 처리 안 하면 에러가 난다.
요약하면, 즉 RuntimeException은 필수로 예외처리 안 해도 된다.
다만, 필요에 따라 try-catch로 잡아서 처리하는 게 프로그램 품질에는 좋을 수는 있다.
여기서 추가로 Error와 Exception의 차이에 대해 알아보자.
Throwable 클래스
: Java에서 모든 오류와 예외의 최상위 부모 클래스다. 에러든 예외든 다 이 클래스를 상속받는다.
Error 클래스
: 심각한 문제를 나타내는 클래스.
시스템 자체에 문제가 생긴 경우(메모리 부족 같은) 발생한다. → 개발자가 신경 쓰지 않는 경우가 많다.
Exception 클래스
: 프로그램이 잡아서 처리할 수 있는 문제를 나타낸다.
Exception 중에서도 RuntimeException을 제외한 것들은 checked exception이라고 부른다.
개발자가 직접 필요한 예외 클래스를 만들어서 쓸 수도 있다. (예: 주문 실패 예외, 회원가입 실패 예외 등)
RuntimeException 클래스
: 프로그램 실행 중에 예상치 못하게 발생할 수 있는 문제를 나타낸다.
이건 checked exception처럼 꼭 try-catch 안 해도 되고, 필요하면 잡아서 처리한다.
한 문장으로 요약하면
Throwable: 모든 오류/예외의 조상님
Error: 시스템이 망가질 때 생김 (개발자가 처리 X)
Exception: 프로그램이 처리할 수 있는 문제 (개발자가 필수적으로 try-catch)
RuntimeException: 실행 중 터질 수 있는 문제 (try-catch 해도 되고 안 해도 됨)
'Java' 카테고리의 다른 글
[Java] JVM의 작동 원리 (5) | 2025.05.13 |
---|---|
[Java] 자바 컴파일하기, JDK, bin, java, javac 확장자 뜻 (1) | 2025.04.18 |
[Java] JDK, JRE, JVM 개념 & 차이 등 정리 (4) | 2025.04.02 |
[Eclipse] 이클립스에서 메서드 구현부를 바로 찾아가도록 설정하는 방법 (4) | 2025.03.17 |
[Java] 자바 주석 종류: Javadoc 주석(/** */)과 멀티라인 주석(/* */의 차이점 (7) | 2025.03.06 |