작성
·
184
0
안녕하세요 영한님,
매번 강의를 보고 커뮤니티 게시판에서 다른분들의 질문을 보고 저도 모르는걸 새로 배워가고있는데요
질문글 중
======================================
실무에서 보면 throw new xxxxException을 했을 경우
이를 호출하는 메서드에 뻘겋게 throw하거나 try catch하라고해서 똑같이 throw해주거나 했던거같은데...
MemberService는 왜 이런게 없을까요?
==============================
라는 내용에서 질문이 있습니다.
구글링으로 checked와 unchecked의 차이에 대해서 알아보았습니다.
다만 checked는트랜잭션에서 롤백이 안되고
unchecked는 롤백이 된다고 하는걸 알았습니다.
여기서 궁금한게 있습니다.
강의 18:17에 validateDuplicateMember 매소드 내에서
if(!findMember.isEmpty() 일 경우
uncheck 예외를 던지게 됩니다.
같은 Unchecked인 IndexOutOfBoundException의 경우 배열의 크기를 잘못 접근하면 try catch로 묶지 않았을 경우 프로그램이 종료가 되더라구요,
하지만 RunTimeException을 상속받는 IllegalStateException은 따로 try catch문으로 잡아주지 않아도 프로그램이 종료되지 않고 예외가 발생하면 이미 존재하는 회원입니다. 라는 로그를 볼 수있습니다.
스프링 내부 어디선가 throw new IllegalStateException을 받아주는것인가요?
받는다면 어디서 받아주는 것인가요?
감사합니다.
답변 1
0
안녕하세요. ariwarabbang님
자바의 메인 메서드를 그냥 직접 실행했는데 예외를 처리할 수 없는 상황이면 해당 메인 메서드를 실행한 쓰레드는 종료되면서, 프로그램이 종료됩니다.
스프링 부트는 톰캣 서버를 내장하게 되는데요.
해당 예외를 처리하지 못하면 예외가 톰캣 서버까지 올라가게 됩니다.
이 톰캣 서버는 해당 예외를 남기고 프로그램을 종료하지는 않습니다.
(예외 하나로 서버가 종료되면 큰일이겠지요?)
서버와 예외처리와의 관계에 관한 더 자세한 내용은
스프링 MVC 2편 강의의 섹션 8. 예외 처리와 오류 페이지를 참고해주세요.
감사합니다.