mingg IT

[Spring] Exception 처리 @ExceptionHandler 예제 본문

BackEnd

[Spring] Exception 처리 @ExceptionHandler 예제

mingg123 2021. 7. 4. 16:08

Web Application의 입장에서는 에러가 났을때 대처할 수 있는 방법

 

1. 에러 페이지

 

2. 400, 500대 Error

 

3. Client가 200 외에 처리를 ㅏ지 못 할 때는 200을 내려주고 별도의 에러 메세지를 전달

 

예외 처리 종류 

 

@ControllerAdvice

 

특정 패키지/ 컨트롤러 예외 처리, Global 예외 처리

 

@ExceptionHandler 

 

특정 Controller 의 예외 처리

 

  @ExceptionHandler(value = MethodArgumentTypeMismatchException.class)
    public ResponseEntity methodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e, HttpServletRequest  httpServletRequest) {

        List <Error> errorList = new ArrayList<>();

        Error error = new Error();
        error.setField("fieldName");
        error.setMessage(e.getMessage());
        error.setInvalidValue("invalidvalue");

        errorList.add(error);
        ErrorResponse errorResponse = new ErrorResponse();
        errorResponse.setErrorList(errorList);
        errorResponse.setMessage(httpServletRequest.getRequestURI());
        errorResponse.setStatusCode(HttpStatus.BAD_REQUEST.toString());
        errorResponse.setResultCode("FAIL");
        System.out.println("Not Null!");
     return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorResponse);
    }

아래와 같이 이쁘게 BODY에 들어오게 된다. 

Comments