스프링 DI 실습을 하다가
public class DuplicateMemberException extends throwable {
public class DuplicateMemberException extends RuntimeException {
어떤 예외로 처리하냐에 따라 메소드의 throws 절에서 선언유무가 달랐다 확실한 차이를 알고 정확하게 짚고 넘어가기 위해 자바의 예외에 대해 포스팅 !
자바의 예외는 크게 세가지로 분류된다
Error
- 시스템에 비정상적인 상황이 발생했을 경우에 발생(메모리 부족이나 스택 오버플로우 같은 복구 불가한 경우)
Checked Exception
- JVM에 의해 발생되거나 JAVA throws문에 의해 발생될 수 있음
- 반드시 try catch를 통한 예외 처리를 해야함
- 컴파일 단계에서 확인 가능함
- 예외발생 시 rollback이 되지 않고 트랜잭션이 commit까지 완료됨
- Exception의 상속받는 하위 클래스 중 RuntimeException을 제외한 모든 예외 (ex. IOException, SQLException)
Unchecked Exception
- JVM의 정상적인 작동 중 발생할 수 있는 예외의 슈퍼클래스
- 메서드 또는 생성자 경계 외부로 전파될 수 있는 경우 메서드 또는 생성자의 throws 절에서 선언될 필요 없음
- 명시적인 처리를 강제하지 않음
- 실행 단계에서 확인 가능함
- 예외발생 시 rollback 됨
- RuntimeException 하위의 예외 (ex. NullPointerException, IllegalArgumentException, IndexOutOfBoundException, SystemException)