버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

코드 블럭
languagejs
linenumberstrue
{
  "errorCode": "NOT_FOUND_ERROR",
  "errorMsg": "Customer not found with id 1",
  "status": 404,
  "timestamp": "2019-12-26 11:45:59"
}

Exception에 Response Status를 매핑하여 Exception 별로 HTTP Status Code와 매핑하고 싶은 경우 다음과 같이 코드를 작성할 수 있습니다.

코드 블럭
languagejava
linenumberstrue
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(HttpStatus.NOT_FOUND)
public class DogsNotFoundException extends RuntimeException {
    public DogsNotFoundException(String message) {
        super(message);
    }
}

또한 예외에 따라서 간단하게 HTTP Status Code로 리턴을 하고 싶다면 아래와 같이 Exception Handler에 @ResponseStatus 를 붙이면 됩니다.

코드 블럭
languagejava
linenumberstrue
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;

@ControllerAdvice
public class DogsServiceErrorAdvice {

    @ResponseStatus(HttpStatus.NOT_FOUND)
    @ExceptionHandler({DogsNotFoundException.class})
    public void handle(DogsNotFoundException e) {}

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ExceptionHandler({DogsServiceException.class, SQLException.class, NullPointerException.class})
    public void handle() {}

    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({DogsServiceValidationException.class})
    public void handle(DogsServiceValidationException e) {}
}

보다 상세한 사항은 https://dzone.com/articles/spring-rest-service-exception-handling-1을 참고하십시오.