on
[24강] 회원가입 - 글로벌 예외처리 하기
[24강] 회원가입 - 글로벌 예외처리 하기
throw
new
(
"유효성검사 실패함 "
)
; 작성
4. 회원가입 창에서 가입정보 입력시 에러페이지 내 3번내용 확인 가능
5. handler 패키지 - > ControllerExceptionHandler 클래스 생성
6. 클래스 내 @ControllerAdvice 어노테이션 생성, 모든 Exception을 다 낚아 챔
7. 낚아채고, 응답할땐 Data return을 위해 @RestController를 적용
8. 함수 public String validationException() 작성
9. @ExceptionHandler(RuntimeException.class)
10. 9번 이 8번이 가로 챔
11. 8번 함수 괄호 내 RuntimeException e 작성, return을 e.getMessage();를 적용
package com.cos.photogramstart.handler; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestController; @RestController @ControllerAdvice public class ControllerExceptionHandler { @ExceptionHandler(RuntimeException.class) public String validationException(RuntimeException e) { return e.getMessage(); } }
12. return 타입이 string 이지만, @RestController 기 때문에, e.getMessage();를 return 함
13. 다시 4번처럼 회원가입창에서 잘못된 내용을 입력하면, '유효성검사 실패함' Message만 나오는걸 확인
14. AuthController 클래스 내 에서 발생된 Exception e을
throw new RuntimeException("유효성검사 실패함");
15. ControllerExceptionHandle 클래스 내 @ExceptionHandler가 낚아채고,
16. ()안 처럼 RuntimeException을 확인하면, public String validationException 함수가 실행되고,
17. e.getMessage();를 return 함. 하지만 문제는 문자열만 리턴을 할수 있게 되므로 다른 방법을 찾아야함
18. 5번 패키지 내 ex 패키지 생성 -> CustomValidationException 클래스 생성
19. 클래스가 Exception이 되려면 extends로 상속 시킨다
20. CustomValidationException에 마우스를 올리면 serialVersionUID를 만들수 있다
(객체를 구분할때 쓴다)
21. 추가로, 생성자도 만들어 message와 errorMap을 받을수 있도록 적용한다
22. errorMap을 return해주는 getter 생성
23. message에 대한 getter는 AuthController 내 RuntimeException에 ()안 message를 던졌고,
RuntimeException에서 super에게 넘긴다. 부모가 Exception 클래스. 부모 또한 super에게 넘긴다.
message는 detail message로 들어오고, 부모한테 던지면 된다.
24. CustomValidation 내 super(message);를 추가 하여 완성
25. RuntimeException이 아닌, CustomException으로 변경
26. return 에서 e.getmessage가 아닌, e.getErrorMap(); 으로 변경
27. 함수 타입도 String이 아닌 Map으로 변경
package com.cos.photogramstart.handler.ex; import java.util.Map; public class CustomValidationException extends RuntimeException { private static final long serialVersionUID = 1L; private Map errorMap; public CustomValidationException(String message, MaperrorMap) { super(message); this.errorMap = errorMap; } public Map getErrorMap(){ return errorMap; } }
from http://aszzoon.tistory.com/35 by ccl(A) rewrite - 2021-10-06 13:01:41