Сопоставьте пользовательское исключение с кодом ответа на ошибку, сохраните ErrorAttributes по умолчанию.JAVA

Программисты JAVA общаются здесь
Anonymous
Сопоставьте пользовательское исключение с кодом ответа на ошибку, сохраните ErrorAttributes по умолчанию.

Сообщение Anonymous »

Моя цель — обработать пользовательское исключение.
  • Я хочу сохранить форму ответа об ошибке по умолчанию (свойства) + сообщение об ошибке. ПроблемаДеталь состоит из разных свойств. Это потому, что я хочу иметь один и тот же ответ об ошибке в формате JSON независимо от того, обрабатывается ли ошибка моим обработчиком или нет (необработанные исключения все равно будут использовать этот ответ по умолчанию, ErrorAttributes).
  • Я не хочу вручную восстанавливать его в каждом обработчике (например, вручную заполнять некоторую карту, глупо надеясь, что она всегда будет синхронизироваться с ErrorAttributes).
Что-то вроде этого было бы неплохо. К сожалению, это не работает. Spring не может внедрить свои ErrorAttributes.

Код: Выделить всё

import org.springframework.boot.webmvc.error.ErrorAttributes;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(InvalidTransferException.class)
public ResponseEntity handle(ErrorAttributes errorAttributes) {
return ResponseEntity.unprocessableContent().body(errorAttributes);
}
}

Код: Выделить всё

java.lang.IllegalStateException: Could not resolve parameter [0] in public org.springframework.http.ResponseEntity com.example.em_card_service.exception.GlobalExceptionHandler.handle(org.springframework.boot.webmvc.error.ErrorAttributes): No suitable resolver
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:221) ~[spring-web-7.0.7.jar:7.0.7]
Что я ожидаю в моем случае:

Код: Выделить всё

{
"timestamp": "2026-05-15T15:55:24.553Z",
"status": 422,
"error": "Unprocessable Content",
"path": "/api/cards/transfer",
"message": "Cannot perform transfer to the same card"
}
Каковы ваши предложения?
Spring Boot 4.

Вернуться в «JAVA»