본문 바로가기
OpenSource/Spring Boot

ace-t의 Spring Boot 따라잡기(기본 - 예외처리)

by 태하팍 2016. 3. 24.
반응형

예외처리!

예외가 발생하면 그냥 찍기만 하는가?!!! 그것이 예외처리를 한것인가? 

예외의 종류는 런타임, 체크드 2가지가 있다카던데.. 어떻게 해야 예외처리 잘했다고 소문이 날것인가??


우리는 런타임예외가 발생하면 그녀석을 잡아다가! 조치를 취할 것 입니다.

1) CommonLineupException.java,CommonLineupResponse.java, ExceptionAdvice.java를 

    만들어 줍니다.




내용은?

CommonLineupException에서는

  • extends RuntimeException를 상속.
  • 생성자를 통해 메시지를 부모생성자에 전달.

  public CommonLineupException(String message){

     super(message);

  }


source


ComonLineupRespose에서는

  • message를 전달받아 getMessage()를 만들어 전달하도록 합니다.

source


ExceptionAdvice에서는

@ControllerAdvice, @ExceptionHandler, @ResponseStatus를 사용!

source


이제 예외처리를 하기 위한 것을 만들었으니 예외를 발생시켜보고 어떻게 동작하는지 알아봅시다.

tip. 보통은 로직이 있는 서비스쪽에서 런타임예외를 발생! 컨트롤러까지 올라오게 되어집니다.


TEST로 기존에 만들었던 컨트롤러에 아래의 메소드를 추가하여 줍니다.

    @RequestMapping("/fail")

    public String fail() {

        throw new CommonLineupException("  This is Fail Test!!");

    } 


결과

http://localhost:8080/lineup/fail



이것을 기반으로 예외처리 구조를 잡으면 된다!

Tip. ExceptionAdvice.java에 위에는 사용자정의 예외만 잡는것을 해보았는데

다른 일반적인 예외도 잡아서 처리가 가능함!!


   @ExceptionHandler(NoHandlerFoundException.class)

    public @ResponseBody CommonLineupResponse noHandlerFoundException(NoHandlerFoundException ex) {

        return new CommonLineupResponse("["+ex.getHttpMethod()+"] / NoHandlerFoundException~!!."+ex.getMessage());

    } 




  - 끝 -


반응형