не могу получить мое пользовательское сообщение об исключении из контроллера исключений - PullRequest
0 голосов
/ 10 апреля 2019

Почему я получил сообщение «Невозможно найти com.example.Api_Angular.Dao.Person с идентификатором 4» вместо «Персона с таким идентификатором не существует».

 @GetMapping("/persons/{id}")
    public Person getPerson(@PathVariable int id)
    {
        Person person = personService.getPersonById(id);
        System.out.println(person);
        if(!(person instanceof Person))
        {
            throw new NoPersonException("Person with this id does not exist");
        }
        return person;
        }

Что я получаю:

{
"status": 400,
"msg": "Unable to find com.example.Api_Angular.Dao.Person with id 4",
"request": "uri=/myApp/persons/4"
}

Каким оно должно быть:

{
"status": 400,
"msg": "Person with this id does not exist",
"request": "uri=/myApp/persons/4"
}

Мое исключение:

public class NoPersonException extends RuntimeException {
    String msg;

    public String getMsg() {
        return msg;
    }

    public NoPersonException() {
    }

    public NoPersonException(String message) {
        this.msg = message;
    }
}

Ответ об ошибке:

@Data
@AllArgsConstructor
public class ErrorDetails {

    private int status;
    private String msg;
    private String request;

    public ErrorDetails() {
    }
}

Контроллер исключений:

@RestControllerAdvice
public class CustomizedResponseEntityExceptionHandler{


    @ExceptionHandler
    public ResponseEntity<ErrorDetails> response(NoPersonException e,WebRequest webRequest)
    {
        ErrorDetails customerErrorResponse=new ErrorDetails(HttpStatus.NOT_FOUND.value(),e.getMessage(),webRequest.getDescription(false));

        return new ResponseEntity<>(customerErrorResponse,HttpStatus.NOT_FOUND);
    }

    @ExceptionHandler
    public ResponseEntity<ErrorDetails> generalresponse(Exception e,WebRequest webRequest)
    {
        ErrorDetails customerErrorResponse=new ErrorDetails(HttpStatus.BAD_REQUEST.value(),e.getMessage(),webRequest.getDescription(false));

        return new ResponseEntity<>(customerErrorResponse,HttpStatus.BAD_REQUEST);
    }

Существует ли проблема с вызываемым типом исключения?Есть ли у вас решение, как решить эту проблему?Я использую пружинный ботинок 2.2.

1 Ответ

0 голосов
/ 11 апреля 2019

Похоже, вы получаете EntityNotFoundException, когда звоните personService.getPersonById(id). Вы должны попробовать обернуть это в try/catch блок, чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...