Назад к вопросам
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);
}
}
Таким образом, вместо того чтобы исключение приводило к стандартной ошибке сервера, приложение возвращает понятный и контролируемый ответ клиенту.