[Java] Checked Exception vs Unchecked Exception

배세훈·2022년 8월 10일
0

java

목록 보기
15/16
post-thumbnail

Error vs Checked Exception vs UncheckedException

  • 자바의 예외는 크게 3가지로 나눌 수 있습니다.
    - 체크 예외(Checked Exception)
    • 에러(Error)
    • 언체크 예외(Unchecked Exception)

자바에서 에러, 예외 관련된 클래스들의 계층구조는 위와 같습니다. Throwable 클래스를 기준으로 Error, Excepton 클래스로 나뉘어집니다. 왼쪽에 보이는 Error는 말 그대로 에러와 관련된 클래스입니다. 그리고 오른쪽에 보이는 Exception도 말 그대로 예외와 관련된 클래스입니다. 자바에서 실행 시(runtime) 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분하였습니다.

에러(Error)란?

  • 에러는 시스템에 비정상적인 상황이 발생했을 경우입니다.
    예를 들어 메모리 부족(OutofMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 복구 할 수 없는 것을 말합니다.
    이러한 에러는 개발자가 예측하기도 쉽지 않고 처리할 수 있는 방법도 없습니다.

예외(Exception)이란?

  • 예외는 프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때 입니다.
    예를들어 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException), 값이 null인 참조변수를 참조(NullPointerException), 존재하지 않는 파일의 이름을 입력(FileNotFoundException) 등이 있습니다.
    예외는 2가지로 나눌 수 있습니다.
    - 체크 예외(Checked Exception)
    - 언체크 예외(UnChecked Exception)

위의 자바 에러 클래스의 계층 구조를 보았을 때 RuntimeException의 하위 클래스들이 Uncheck Exception이라 하고 RuntimeException의 하위 클래스가 아닌 Exception 클래스의 하위 클래스들을 Checked Exception이라고 합니다.

체크 예외(Checked Exception)

  • 체크 예외는 RuntimeException의 하위 클래스가 아니면서 Exception 클래스의 하위 클래스들입니다. 체크 예외의 특징은 반드시 에러 처리를 해야하는 특징(try / catch or throw)을 가지고 있습니다.

  • 존재하지 않는 파일의 이름을 입력(FileNotFoundException)

  • 실수로 클래스의 이름을 잘못 적음(ClassNotFoundException)

언체크 예외(UnChecked Exception)

  • 언체크 예외는 RuntimeException의 하위 클래스들을 의미합니다. 이것은 체크 예외와는 달리 에러 처리를 강제하지 않습니다.
    실행 중에(runtime) 발생할 수 있는 예외를 의미합니다.

  • 배열의 범위를 벗어난 경우(ArrayIndexOutOfBoundsException)

  • 값이 null인 참조변수를 참조(NullPointerException)

체크 예외와 언체크 예외의 차이

Checked Exception Unchecked Exception
처리 여부 반드시 예외를 처리해야 함 명시적인 처리를 강제하지 않음
확인 시점 컴파일 단계 실행 단계
예외 발생시 트랜잭션 처리 roll-back 하지 않음 roll-back 함
대표 예외 Exception의 상속받는 하위 클래스 중 Runtime Exception을 제외한 모든 예외
- IOException
- SQLExeption
RuntimeException 하위 예외
- NullPointerException
-IllegalArgumentException
-IndexOutOfBoundException
SystemException
  • 체크 예외와 언체크 예외의 차이점 중 가장 중요한 것은 Rollback 여부입니다.
  • 체크 예외: Rollback 되지 않고 트랜잭션이 commit까지 완료됩니다.
  • 언체크 예외: Rollback 됩니다.
profile
성장형 인간

0개의 댓글