본문 바로가기
Java , Spring/Java

[Java] UncheckedException과 CheckedException (Error와 Exception)

by 방배킹 2024. 1. 22.

Error와 Exception

먼저 Error와 Exception의 차이에 대해 알아보자

 

Error(오류)는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 개발자가 미리 예측하여 방지할 수 없다.

Exception(예외)는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 개발자가 미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)를 해야한다.

 

 

 

 

Error의 예시

  • StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류
  • OutOfMemoryError : JVM이 할당된 메모리의 부족으로 더 이상 객체를 할당할 수 없을 때 던져지는 오류 (Garbage Collector에 의해 추가적인 메모리가 확보되지 못하는 상황이기도 하다)

개발자가 미리 오류를 대처하기는 힘들다 하지만 예외는 처리할 수 있다.

 

Exception의 예시

  • NullPointerException : 객체가 필요한 경우인데 응용프로그램이 null을 사용하려고 시도할 경우 던져지는/던질 수 있는 예외
  • IllegalArgumentException : 메서드가 허가되지 않거나 부적절한 argument를 받았을 경우에 던져지는/던질 수 있는 예외

Exception은 Checked Exception, Unchecked Exception로 나누어진다.

 

Checked Exception

  • Complie Exception이라고도 하며 Exception을 바로 상속받는다.
  • 컴파일 시점에 예외를 catch 하는지 정적으로 확인한다. 컴파일 시점에 예외에 대해 처리(try/catch) 하지 않는다면 컴파일 에러가 발생한다.
  • 트랜잭션 Rollback이 안된다. (지금 이글을 쓰고있는 이유)

Unchecked Exception

  • Unchecked Exception은 RuntimeException을 상속받는다.
  • 컴파일 시점에 예외를 catch 하는지 확인하지 않는다. 따라서 컴파일 시점에 예외가 발생하는지 판단할 수 없다.
  • 트랜잭션 Rollback이 된다. (지금 이글을 쓰고있는 이유)

 

 

 

Reference

 

 

댓글