Обработка исключений рекомендаций контроллераJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обработка исключений рекомендаций контроллера

Сообщение Anonymous »


В Spring Boot 3 я использую Controller Advice для обработки исключения уникальности базы данных и создания собственного сообщения об ошибке, которое я могу передать в формате JSON и записать в журнал.

Я хотел бы добавить информацию из MethodHandler, чтобы я мог также регистрировать/добавлять в пользовательское сообщение URI и контроллер, в котором возникло исключение.

Вот как это настроено на данный момент:

Контроллер

/** * Обновление автомобиля (PUT) */ @PutMapping(value = "/{id}", потребляет = "application/json") ResponseEntity updateCarDto(@Valid @RequestBody CarCreateDto updateCar, @PathVariable Long id) { CarCreateDto Car = CarService.updateCar(updateCar, id); вернуть новый ResponseEntity(Car, HttpStatus.OK); } } Обработчик исключений

@ExceptionHandler(DataIntegrityViolationException.class) public ResponseEntity dataIntegrityViolantionException (окончательное DataIntegrityViolationException e) { ObjectMapper objectMapper = новый ObjectMapper(); objectMapper.setDateFormat(df); ErrorMessage errorMessage = новое ErrorMessage(); Строка MostSpecificCauseMessage = e.getMostSpecificCause().getMessage(); if (e.getCause().getCause() экземпляр SQLIntegrityConstraintViolationException) { пытаться { Строка jsonMessage = objectMapper.writeValueAsString(errorMessage.builder() .reasonCode(ErrorMessage.ReasonCode.NAME_ALREADY_EXISTS) .message(mostSpecificCauseMessage) .timeStamp(df.format(System.currentTimeMillis())) .строить()); вернуть новый ResponseEntity(jsonMessage, HttpStatus.CONFLICT); } catch (JsonProcessingException ex) { выбросить новое RuntimeException(ex); } } return new ResponseEntity("Неизвестное исключение нарушения целостности данных с сообщением: " +mostSpecificCauseMessage, HttpStatus.UNPROCESSABLE_ENTITY); } Пример очень похож на то, что я хочу сделать, однако он не показывает, как перехватить исключение на контроллере и в соответствующем экземпляре HandlerMethod чтобы я мог добавить:

Class ControllerName = handlerMethod.getMethod().getDeclaringClass(); String MethodName = handlerMethod.getMethod().getName(); Имя контроллера и имя метода для сообщения об ошибке.

Это просто случай добавления try-catch к методу контроллера и передачи HandlerMethod в качестве параметра?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»