Какие подходы и средства предоставляются в Spring MVC для обработки исключительных ситуаций и ошибок?
Answer from AI
sobes.tech AI
В Spring MVC для обработки исключений и ошибок предоставляются несколько подходов:
-
@ExceptionHandler — аннотация, позволяющая определить метод в контроллере (или в отдельном классе с @ControllerAdvice), который будет обрабатывать определённые типы исключений.
-
@ControllerAdvice — класс, который глобально обрабатывает исключения для всех контроллеров приложения. Внутри него можно использовать методы с @ExceptionHandler.
-
ResponseStatusException — исключение, которое можно выбросить с указанием HTTP-статуса, чтобы вернуть нужный код ошибки клиенту.
-
HandlerExceptionResolver — интерфейс для более тонкой настройки обработки исключений.
Пример использования @ControllerAdvice и @ExceptionHandler:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<String> handleNotFound(ResourceNotFoundException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleGeneric(Exception ex) {
return new ResponseEntity<>("Internal server error", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
Таким образом, Spring MVC предоставляет гибкие средства для централизованной и локальной обработки ошибок и исключений.