[JAVA] Checked Exception, Unchecked Exception

정호석·2022년 5월 11일
0

자바의 Exception은 크게 세가지입니다.

  • Checked Exception
  • Unchecked Exception
  • Error

Error.

에러는 시스템에 비정상적인 상황이 발생했을 경우에 발생합니다.
예를들어 OutofMemoryError or StackOverflowError 등과 같은 복구할 수 없는 것이 바로 Error 입니다.

예외(Exception).

예외는 프로그램 실행 중에 개발자의 실수로 얘기치 않은 상황이 발생했을때를 말합니다.
예를들어 배열의 범위를 벗어난 ArrayIndexOutofBoundsException 이나 NullPointerException or FileNotFoundException 등등이 있습니다.

체크예외 - 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 vs UnChecked Exception 선택하기

  • 임의의 예외 클래스를 만들어 예외 처리를 하는 경우가 많을 것인데요. 이 때 try-catch로 묶어줄 필요가 있을 경우에만 Exception 클래스를 확장합니다.
  • 일반적으로 실행시 예외를 처리할 수 있는 경우에는 RuntimeException 클래스를 확장해 Unchecked Exception을 사용하는 것이 좋습니다.
profile
welcome

2개의 댓글

comment-user-thumbnail
2022년 5월 12일

고생 많으십니다!

1개의 답글