ExceptionHandler не перехватывает исключения исключения ⇐ JAVA
ExceptionHandler не перехватывает исключения исключения
У меня проблема: из названия следует, что мой метод, помеченный @ExceptionHandle, не перехватывает какие-либо исключения. Я не знаю, в чем проблема, я пробовал использовать аргумент @ExceptionHandler(...) как для конкретных исключений, так и для их суперклассов. Я попытался отладить его и поместил точку останова внутри метода handleExceptions(), но он не попал внутрь. Я думал, что контекст maybr не видит мои исключения и/или класс ответа, поскольку beans co /i аннотировал их обоих с помощью аннотации @Component, но это ничего не сделало, я попытался переместить класс GlobalExceptionHandler в тот же пакет, что и основной метод. как было предложено в одном из онлайн-решений, но оно тоже не сработало. Возможно, проблема связана с версией загрузки Spring, которую я использую, а именно 2.1.18.RELEASE. Я понятия не имею, в чем проблема, заранее спасибо:
Класс ControllerAdvice
@RestControllerAdvice @Slf4j //пробовал аннотировать его с помощью @Component, хотя @RestController имеет эту аннотацию внутри себя, но это не сработало общественный класс GlobalExceptionHandler { @ExceptionHandler(PublishDocumentException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ResponseEntity handleExceptions(final PublishDocumentException ex) { log.info("Исключение {}", ex.getClass().getName()); окончательный ErrorResponse errorResponse = новый ErrorResponse(); errorResponse.setDescription(String.valueOf(ex.getCause())); errorResponse.setStatusCode(HttpStatus.valueOf(ex.code())); errorResponse.setMessage(ex.getMessage()); вернуть новый ResponseEntity(errorResponse, errorResponse.getStatusCode()); } } Класс ErrorResponse
@Getter @Сеттер //попробовал также аннотировать его с помощью @Component общественный класс ErrorResponse { описание частной строки; частный HttpStatus statusCode; личное строковое сообщение; ссылка на частную строку; } исключение, вызывающее метод
@ApplicationService @AllArgsConstructor (доступ = AccessLevel.PACKAGE) @Slf4j общественный класс DocumentServiceImpl { public PublishDocumentResponse publicDocument (окончание String sessionId) { ... создать новое исключение PublishDocumentException (FAILED_TO_GENERATE_PDF_DOCUMENT); } } Класс PublishException
публичный класс PublishDocumentException расширяет HttpRuntimeException { public PublishDocumentException (окончательное тело строки) { супер(HttpStatus.SC_BAD_REQUEST, тело); } } Класс HttpRunTimeException
публичный класс HttpRuntimeException расширяет GeneralRuntimeException реализует MessageException { public HttpRuntimeException (int httpStatus, тело строки) { супер(httpStatus, тело); } public HttpRuntimeException (int httpStatus, String body, Object... params) { супер (httpStatus, тело, параметры); } } Метод контроллера:
@RestController @AllArgsConstructor (доступ = AccessLevel.PACKAGE) @Slf4j общественный класс DocumentController { частный окончательный DocumentService documentServiceImpl; @GetMapping(value = "/documents/declarations/generate", производит = APPLICATION_JSON_VALUE) public ResponseEntitygenerateDocument(@RequestParam Final String sessionId) { ответ вар = documentServiceImpl.generateDocument (sessionId); log.info("Документ успешно создан! Статус ответа: {}!", HttpStatus.OK); вернуть ResponseEntity.ok(ответ); } }
У меня проблема: из названия следует, что мой метод, помеченный @ExceptionHandle, не перехватывает какие-либо исключения. Я не знаю, в чем проблема, я пробовал использовать аргумент @ExceptionHandler(...) как для конкретных исключений, так и для их суперклассов. Я попытался отладить его и поместил точку останова внутри метода handleExceptions(), но он не попал внутрь. Я думал, что контекст maybr не видит мои исключения и/или класс ответа, поскольку beans co /i аннотировал их обоих с помощью аннотации @Component, но это ничего не сделало, я попытался переместить класс GlobalExceptionHandler в тот же пакет, что и основной метод. как было предложено в одном из онлайн-решений, но оно тоже не сработало. Возможно, проблема связана с версией загрузки Spring, которую я использую, а именно 2.1.18.RELEASE. Я понятия не имею, в чем проблема, заранее спасибо:
Класс ControllerAdvice
@RestControllerAdvice @Slf4j //пробовал аннотировать его с помощью @Component, хотя @RestController имеет эту аннотацию внутри себя, но это не сработало общественный класс GlobalExceptionHandler { @ExceptionHandler(PublishDocumentException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ResponseEntity handleExceptions(final PublishDocumentException ex) { log.info("Исключение {}", ex.getClass().getName()); окончательный ErrorResponse errorResponse = новый ErrorResponse(); errorResponse.setDescription(String.valueOf(ex.getCause())); errorResponse.setStatusCode(HttpStatus.valueOf(ex.code())); errorResponse.setMessage(ex.getMessage()); вернуть новый ResponseEntity(errorResponse, errorResponse.getStatusCode()); } } Класс ErrorResponse
@Getter @Сеттер //попробовал также аннотировать его с помощью @Component общественный класс ErrorResponse { описание частной строки; частный HttpStatus statusCode; личное строковое сообщение; ссылка на частную строку; } исключение, вызывающее метод
@ApplicationService @AllArgsConstructor (доступ = AccessLevel.PACKAGE) @Slf4j общественный класс DocumentServiceImpl { public PublishDocumentResponse publicDocument (окончание String sessionId) { ... создать новое исключение PublishDocumentException (FAILED_TO_GENERATE_PDF_DOCUMENT); } } Класс PublishException
публичный класс PublishDocumentException расширяет HttpRuntimeException { public PublishDocumentException (окончательное тело строки) { супер(HttpStatus.SC_BAD_REQUEST, тело); } } Класс HttpRunTimeException
публичный класс HttpRuntimeException расширяет GeneralRuntimeException реализует MessageException { public HttpRuntimeException (int httpStatus, тело строки) { супер(httpStatus, тело); } public HttpRuntimeException (int httpStatus, String body, Object... params) { супер (httpStatus, тело, параметры); } } Метод контроллера:
@RestController @AllArgsConstructor (доступ = AccessLevel.PACKAGE) @Slf4j общественный класс DocumentController { частный окончательный DocumentService documentServiceImpl; @GetMapping(value = "/documents/declarations/generate", производит = APPLICATION_JSON_VALUE) public ResponseEntitygenerateDocument(@RequestParam Final String sessionId) { ответ вар = documentServiceImpl.generateDocument (sessionId); log.info("Документ успешно создан! Статус ответа: {}!", HttpStatus.OK); вернуть ResponseEntity.ok(ответ); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
ExceptionHandler зарегистрирован, но никогда не вводится при возникновении исключения.
Anonymous » » в форуме C# - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-