Встречается на собеседованиях • сегодня

Как хендлить ошибки пользователя и отправлять ему необходимый результат вместо ошибки в Spring

В Spring ошибки пользователя можно хэндлить через `@ControllerAdvice` и `@ExceptionHandler`. ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handleValidationException(MethodArgumentNotValidException ex) { List errors = ex.getBindingResult() .getFieldErrors() .stream() .map(FieldError::getDefaultMessage) .collect(Collectors.toList()); ErrorResponse response = new ErrorResponse("Validation failed", errors); return ResponseEntity.badRequest().body(response); } @ExceptionHandler(UserNotFoundException.class) public ResponseEntity handleUserNotFound(UserNotFoundException ex) { ErrorResponse response = new ErrorResponse(ex.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); } } ``` **Ключевые моменты:** - `@ControllerAdvice` перехватывает исключения во всех контроллерах. - `@ExceptionHandler` указывает, какой метод обрабатывает конкретное исключение. - Можно возвращать кастомный `ErrorResponse` с нужным HTTP-статусом. - Для валидации DTO удобно использовать `@Valid` и перехватывать `MethodArgumentNotValidException`. Пример `ErrorResponse`: ```java public record ErrorResponse(String message, List details) {} ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы