Sobes.tech
Junior — Middle
83

¿Cómo implementar en Spring el manejo de errores personalizados para devolver respuestas correctas en lugar de excepciones?

Empresas donde se preguntó
ООО СКВАД

Respuesta de la IA

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);
    }
}

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