Почему я получил сообщение «Невозможно найти 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.