Stacktrace пользовательского исключения не печатается в Spring Boot 2.3 - PullRequest
0 голосов
/ 19 июня 2020

Трассировка стека ошибок не печатается в консоли для настраиваемого исключения, которое помечено @ResponseStatus

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public class InternalErrorException extends RuntimeException {

  public InternalErrorException(String message) {
    super(message);
  }

  public InternalErrorException(String message, Throwable throwable) {
    super(message, throwable);
  }
}

Выбрасывание исключения, например throw new InternalErrorException("error", e), никогда не выводить трассировку стека в консоли, если я не удалю аннотацию @ResponseStatus

Как мне напечатать его, сохранив аннотацию @ResponseStatus?

1 Ответ

0 голосов
/ 19 июня 2020

См. Тип аннотации ResponseStatus API do c.

Предупреждение: при использовании этой аннотации в классе исключения или при установке атрибута причины этой аннотации Будет использоваться метод HttpServletResponse.sendError.

С HttpServletResponse.sendError ответ считается завершенным и не должен записываться в дальнейшем. Кроме того, контейнер сервлетов обычно записывает страницу с ошибкой HTML, поэтому использует причину, не подходящую для REST API. В таких случаях предпочтительнее использовать ResponseEntity в качестве возвращаемого типа и вообще избегать использования @ResponseStatus.

HttpServletResponse.sendError не вызывает вашу ошибку, и я предполагаю, что она никогда не регистрируется из-за этого .

Возможно, вы захотите реализовать обработчик исключений для этого исключения, чтобы оно регистрировалось.

Связанный вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...