

Exception을 상속받지만 RuntimeException을 제외한 클래스들이 체크 예외의 대상이다.IOException: 파일 읽기/쓰기 시 발생 가능.SQLException: 데이터베이스 접근 중 발생 가능.ClassNotFoundException: 클래스 로딩 시 발생 가능.📌체크 예외(Checked Exception) → 컴파일 타임에 강제됨, try-catch 필수
RuntimeException을 상속받는 예외NullPointerException: 객체가 null인 상태에서 메서드 호출 시 발생.ArrayIndexOutOfBoundsException: 배열의 인덱스가 잘못되었을 때 발생.ArithmeticException: 정수를 0으로 나누는 경우 발생.📌 언체크 예외(Unchecked Exception) → 런타임에서 발생, 논리적 오류/프로그래밍 실수로 주로 발생
+언체크 예외 =RuntimeException을 상속받은 예외
그럼 📌
RuntimeException은 언체크 예외들의 최종 부모 클래스라고 할 수 있다.
위에서 설명했지만 체크 예외는 반드시 예외 처리를 해줘야 컴파일이 가능하고, 언체크 예외는 개발자의 오류/프로그래밍 실수로 주 발생을 하기 때문에 예외 처리를 강제하지 않는다.
또한, 언체크 예외는 프로그램의 정상적인 흐름에서 발생하는 예외가 아님
-> 체크 예외는 파일이나 네트워크 오류로 예측 가능한 예외
-> 반면, RuntimeException은 정상적인 흐름에서 컴파일러가 예측하기 쉽지않다.
추가적으로 RuntimeException은 개발자가 코드를 수정하면 충분히 예방할 수 있음...
-> 뭐 입력값을 검증한다던지, 정수를 0으로 나누지못하게 막거나...
-> null 접근하는 경우를 아예없애버리거나 인덱스 접근 바운더리 제한을 두거나 등등등등ㄷ