Пользовательское исключение не дает правильного сообщения, весна? - PullRequest
0 голосов
/ 30 мая 2020

Я добавил класс customexception для обработки моего класса api.

Класс исключения

@SuppressWarnings({ "unchecked", "rawtypes" })
@ControllerAdvice
public class ApiExceptionHandler extends ResponseEntityExceptionHandler {

@ExceptionHandler(Exception.class)
public final ResponseEntity<Object> handleAllExceptions(Exception ex, WebRequest request) {
    List<String> details = new ArrayList<>();
    details.add(ex.getLocalizedMessage());
    ErrorMessage error = new ErrorMessage("Server Error", details);
    return new ResponseEntity(error, HttpStatus.INTERNAL_SERVER_ERROR);
}

@ExceptionHandler(RecordNotFoundException.class)
public final ResponseEntity<Object> handleConfigNotFoundException(RecordNotFoundException ex, WebRequest request) {
    List<String> details = new ArrayList<>();
    details.add(ex.getLocalizedMessage());
    ErrorMessage error = new ErrorMessage("Record Not Found", details);
    return new ResponseEntity(error, HttpStatus.NOT_FOUND);
}

@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
        HttpHeaders headers, HttpStatus status, WebRequest request) {
    List<String> details = new ArrayList<>();
    for (ObjectError error : ex.getBindingResult().getAllErrors()) {
        details.add(error.getDefaultMessage());
    }
    ErrorMessage error = new ErrorMessage("Validation Failed", details);
    return new ResponseEntity(error, HttpStatus.BAD_REQUEST);
}
}

Метод API

    @RequestMapping(value = "/config", params = { "appCode", "appVersion" }, method = RequestMethod.GET)
public ResponseEntity<ConfigResponse> getConfig(@RequestParam(value = "appCode", required = true) String appCode,
        @RequestParam(value = "appVersion", required = true) String appVersion) {
    List<AppConfig> result = configRepository.findByCodeAndVersion(appCode, appVersion);
    if (result.isEmpty()) {
        throw new RecordNotFoundException(appCode + " or " + appVersion + "does not exist");
    }

    AppConfig config = new AppConfig();
    return new ResponseEntity<ConfigResponse>(config.convertToResponse(result), HttpStatus.OK);

}

Запись не найдена

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

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

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