@exceptionhandler не работает в Spring REST - PullRequest
0 голосов
/ 02 июля 2018

Я новичок в Spring REST и выполнял обработку исключений в Spring REST. Ниже приведен код контроллера, который выдает пользовательское исключение

@RequestMapping(value = "/getAllCountries", method = RequestMethod.GET, headers = "Accept=application/json")
public Country getCountries() throws CountryNotFoundException{

    throw new CountryNotFoundException();

    //List<Country> listOfCountries = countryService.getAllCountries();
    // return listOfCountries;
}

@ExceptionHandler(CountryNotFoundException.class)
public ResponseEntity<ErrorMessage> handleException(HttpServletRequest req, Exception e)
{
    ErrorMessage error = new ErrorMessage("Custom handler message "+e.toString(), req.getRequestURI());
    return new ResponseEntity<ErrorMessage>(error,HttpStatus.NOT_FOUND);

}

Несмотря на это, обработчик не выполняется, и я получаю следующее исключение:

HTTP Status 500 - Request processing failed; nested exception is 
org.arpit.java2blog.exception.CountryNotFoundException

Может кто-нибудь сообщить мне, пожалуйста, есть ли какие-либо другие конфигурации, которые нужно позаботиться для выполнения обработчиком?

РЕДАКТИРОВАТЬ: Когда я изменяю параметр ResponseEntity на String, он работает, но не с ErrorMessage. Почему происходит такое поведение?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Попробуйте это

import com.fasterxml.jackson.annotation.JsonProperty;

public class ErrorMessage {

    @JsonProperty
    private final String message;

    @JsonProperty
    private final String requestURI;

    public ErrorMessage(String message, String requestURI) {
        this.message = message;
        this.requestURI = requestURI;
    }
}
0 голосов
/ 02 июля 2018

Пожалуйста, следуйте моему сообщению по обработке исключений. Я создал образец проекта для более подробной справки, который можно найти здесь

...