Sobes.tech
Назад к вопросам
Junior — Middle
60

Каким образом в Spring реализовать обработку пользовательских ошибок с целью возврата корректных ответов, а не исключений?

Компании, где спрашивали
ООО СКВАД

Ответ от нейросети

sobes.tech AI

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

Это позволяет перехватывать исключения, возникающие в контроллерах, и формировать собственные объекты ответа с нужным HTTP-статусом и телом.

Пример:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(CustomNotFoundException.class)
    public ResponseEntity<String> handleNotFound(CustomNotFoundException ex) {
        return new ResponseEntity<>("Ресурс не найден: " + ex.getMessage(), HttpStatus.NOT_FOUND);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleGeneric(Exception ex) {
        return new ResponseEntity<>("Произошла ошибка: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

Таким образом, вместо того чтобы исключение приводило к стандартной ошибке сервера, приложение возвращает понятный и контролируемый ответ клиенту.