Встречается на собеседованиях • сегодня
Как организовать работу с исключениями в проекте с несколькими REST-контроллерами, каждый из которых реализует CRUD-операции для разных сущностей
Лучше всего создать глобальный обработчик исключений через `@ControllerAdvice`. Это позволит централизованно обрабатывать исключения для всех контроллеров.
Пример структуры:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity handleEntityNotFound(EntityNotFoundException ex) {
ErrorResponse error = new ErrorResponse("Not Found", ex.getMessage());
return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity handleValidation(MethodArgumentNotValidException ex) {
List errors = ex.getBindingResult()
.getFieldErrors()
.stream()
.map(FieldError::getDefaultMessage)
.collect(Collectors.toList());
ErrorResponse error = new ErrorResponse("Validation Failed", errors.toString());
return new ResponseEntity<>(error, HttpStatus.BAD_REQUEST);
}
}
```
Ключевые моменты:
1. Создаем собственные бизнес-исключения (например, `EntityNotFoundException`)
2. Используем стандартные исключения Spring (`MethodArgumentNotValidException`)
3. Возвращаем унифицированный `ErrorResponse` с деталями ошибки
4. Задаем соответствующие HTTP-статусы
Для валидации DTO можно использовать аннотации jakarta.validation (`@NotNull`, `@Size` и т.д.)

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы