Назад к вопросам
Junior — Middle
67
Каким образом лучше всего структурировать обработку исключений в проекте, содержащем несколько REST-контроллеров, каждый из которых обеспечивает операции CRUD для различных сущностей?
Ответ от нейросети
sobes.tech AI
Лучший способ структурировать обработку исключений в проекте с несколькими REST-контроллерами — использовать централизованный обработчик исключений. В Spring Boot, например, для этого применяют аннотацию @ControllerAdvice, которая позволяет создать класс, обрабатывающий исключения, выбрасываемые из любых контроллеров.
Преимущества такого подхода:
- Единое место для обработки ошибок и формирования ответов клиенту.
- Упрощение кода контроллеров — им не нужно обрабатывать исключения локально.
- Легко поддерживать и расширять обработку ошибок.
Пример:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity<String> handleNotFound(EntityNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleGeneric(Exception ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Внутренняя ошибка сервера");
}
}
Таким образом, все контроллеры могут выбрасывать исключения, а @ControllerAdvice будет их перехватывать и формировать корректные HTTP-ответы.