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

Как организовать работу с ошибками в проекте с несколькими REST-контроллерами, каждый из которых реализует CRUD-операции для разных сущностей

Для централизованной обработки ошибок в Spring Boot приложении используйте `@ControllerAdvice` + `@ExceptionHandler`. Пример: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(EntityNotFoundException.class) public ResponseEntity handleEntityNotFound(EntityNotFoundException ex) { ErrorResponse error = new ErrorResponse( "NOT_FOUND", ex.getMessage(), LocalDateTime.now() ); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error); } @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handleValidation(MethodArgumentNotValidException ex) { List errors = ex.getBindingResult() .getFieldErrors() .stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .toList(); ErrorResponse error = new ErrorResponse( "VALIDATION_FAILED", errors.toString(), LocalDateTime.now() ); return ResponseEntity.badRequest().body(error); } } ``` **Ключевые моменты:** 1. Создайте кастомные исключения (например, `EntityNotFoundException`). 2. Используйте `@ControllerAdvice` для глобального перехвата исключений. 3. Возвращайте структурированный JSON с кодом ошибки, сообщением и временем. 4. Обрабатывайте специфичные исключения (валидация, `DataIntegrityViolationException` и т.д.). Пример `ErrorResponse`: ```java @Data @AllArgsConstructor class ErrorResponse { private String code; private String message; private LocalDateTime timestamp; } ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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