Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: controller, advice, handling, exception

Как реализовать глобальный exception handling в Spring?

Вопрос проверяет знание централизованной обработки ошибок и архитектуры REST-приложений.

Короткий ответ

Глобальная обработка исключений реализуется через @ControllerAdvice.
Внутри него объявляются методы с @ExceptionHandler.
Это позволяет централизовать логику обработки ошибок.
Контроллеры становятся чище.
Ответы клиенту становятся единообразными.

Длинный ответ

Глобальный exception handling — стандартная практика в Spring-приложениях.

Определение

@ControllerAdvice — это компонент Spring, перехватывающий исключения из всех контроллеров.

Базовая реализация

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(EntityNotFoundException.class)
    public ResponseEntity<String> handleNotFound(EntityNotFoundException ex) {
        return ResponseEntity.status(404).body(ex.getMessage());
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleGeneral(Exception ex) {
        return ResponseEntity.status(500).body("Internal error");
    }
}

Преимущества подхода

  • единая точка обработки ошибок

  • повторное использование логики

  • чистые контроллеры

  • централизованное логирование

Расширенные возможности

  • возврат кастомных DTO ошибок

  • маппинг исключений на HTTP-коды

  • интеграция с мониторингом

Вывод

@ControllerAdvice — основной и рекомендуемый способ реализации глобального exception handling в Spring.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Spring

    Spring

Ключевые слова

#controller

#advice

#handling

#exception

Подпишись на Java Developer в телеграм