Sobes.tech
Back to questions
Junior — Middle
88

Каким образом осуществляется обработка исключений в контроллерах, помеченных аннотацией @Controller?

Answer from AI

sobes.tech AI

В Spring MVC контроллерах, помеченных аннотацией @Controller, обработка исключений может осуществляться несколькими способами:

  • @ExceptionHandler — метод внутри контроллера или отдельного класса с аннотацией @ControllerAdvice, который перехватывает исключения определённого типа и возвращает ответ.

  • @ControllerAdvice — глобальный обработчик исключений для всех контроллеров, позволяет централизованно обрабатывать ошибки.

  • ResponseStatusException — выбрасывание исключения с аннотацией @ResponseStatus для автоматической установки HTTP статуса.

Пример использования @ExceptionHandler внутри контроллера:

@Controller
public class MyController {

    @GetMapping("/example")
    public String example() {
        if (true) {
            throw new IllegalArgumentException("Ошибка параметра");
        }
        return "view";
    }

    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
        return ResponseEntity.badRequest().body(ex.getMessage());
    }
}

Таким образом, при возникновении исключения IllegalArgumentException метод handleIllegalArgument вернёт клиенту ответ с кодом 400 и сообщением ошибки.