예외 (Exception)
java.lang.Exception 클래스와 하위 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용된다.
그리고 Exception은 다시 체크 예외와 언체크 예외로 구분된다.
체크 예외를 catch해도 쿼리를 수정하여 재배포하지 않는 이상 복구되지 않는 경우가 많기 때문에, 실제 개발에서는 대부분 언체크 예외를 사용한다.
언체크 예외 (Uncheck Exception)
RuntimeException 클래스를 상속받는 예외 클래스들은 복구 가능성이 없는 예외들이므로 컴파이럴라 예외처리를 강제하지 않는다.
컴파일러가 잡아주지 않으므로 개발자가 실수로 예외를 누락할 수 있다는 단점이 있다.
언체크 예외 example
해결하기 위해서는
Spring은 언체크 예외로 정의하고, 무분별한 throw를 하지 않아도 되도록 도와준다.
(Error와 마찬가지인 개념)
즉, 런타임 예외는 예상치 못했던 상황에서 발생하는 것이 아니므로 굳이 예외 처리를 강제하지 않는다.
언체크 예외는 RuntimeException을 extends(Java 상속)한다.
--> RuntimeException의 기능이 확장된다.
--> RuntimeException을 써도 되지만 구체적인 에러 정보를 담기가 한계가 있다.
--> 그래서 extends 하여 기능을 확장해서 사용한다.