[챌린지반 1차 과제] Exception

말하는 감자·2025년 3월 24일

내일배움캠프

목록 보기
26/73

RuntimeException, CheckedException, UncheckedException 의 차이점

체크 예외 - CheckedException

  • 컴파일 타임(Compile-time)에서 강제적으로 처리해야 하는 예외
  • 💡 예외 처리를 컴파일러가 확인해 줌.
    • 따라서 체크 예외를 처리하지 않으면 컴파일 에러 발생(빨간 줄 발생)

종류

  • Exception을 상속받지만 RuntimeException을 제외한 클래스들이 체크 예외의 대상이다.
  • IOException: 파일 읽기/쓰기 시 발생 가능.
  • SQLException: 데이터베이스 접근 중 발생 가능.
  • ClassNotFoundException: 클래스 로딩 시 발생 가능.
    등등등등등
    즉, ⛔예측 가능한 환경적 요인(파일, 네트워크 등)으로 인해 발생

📌체크 예외(Checked Exception) → 컴파일 타임에 강제됨, try-catch 필수






언체크 예외 - UncheckedException

  • 런타임(Runtime)에서 발생하며 강제적으로 처리할 필요 없는 예외
  • 컴파일 시에는 오류 없음
    • 💡컴파일러가 예외 처리 여부를 검사하지 않으므로, try-catch 블록으로 처리하지 않아도 코드는 정상적으로 컴파일됨

종류

  • RuntimeException을 상속받는 예외
    • 언체크 예외 = RuntimeException을 상속받은 예외
  • NullPointerException: 객체가 null인 상태에서 메서드 호출 시 발생.
  • ArrayIndexOutOfBoundsException: 배열의 인덱스가 잘못되었을 때 발생.
  • ArithmeticException: 정수를 0으로 나누는 경우 발생.
    즉, ⛔일반적인 코딩 실수에서 발생

📌 언체크 예외(Unchecked Exception) → 런타임에서 발생, 논리적 오류/프로그래밍 실수로 주로 발생
+언체크 예외 = RuntimeException을 상속받은 예외

그럼 📌RuntimeException은 언체크 예외들의 최종 부모 클래스라고 할 수 있다.






RuntimeException 일 경우 필수 처리 예외가 아닌 이유

위에서 설명했지만 체크 예외는 반드시 예외 처리를 해줘야 컴파일이 가능하고, 언체크 예외는 개발자의 오류/프로그래밍 실수로 주 발생을 하기 때문에 예외 처리를 강제하지 않는다.

또한, 언체크 예외는 프로그램의 정상적인 흐름에서 발생하는 예외가 아님
-> 체크 예외는 파일이나 네트워크 오류로 예측 가능한 예외
-> 반면, RuntimeException정상적인 흐름에서 컴파일러가 예측하기 쉽지않다.

추가적으로 RuntimeException은 개발자가 코드를 수정하면 충분히 예방할 수 있음...
-> 뭐 입력값을 검증한다던지, 정수를 0으로 나누지못하게 막거나...
-> null 접근하는 경우를 아예없애버리거나 인덱스 접근 바운더리 제한을 두거나 등등등등ㄷ

profile
대충 데굴데굴 굴러가는 개발?자

0개의 댓글