я сделал исключение, что я выбрасываю всегда, когда я хочу страницу 404:Как удалить исключение в качестве исключения @ ResponseStatus-annotated в Spring @ExceptionHandler?
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class PageNotFoundException extends RuntimeException {
Я хочу, чтобы создать контроллер шириной @ExceptionHandler
, который будет повторно бросок ArticleNotFoundException
(который вызывает ошибку 500), как мой 404 исключение:
@ExceptionHandler(value=ArticleNotFoundException.class)
public void handleArticleNotFound() {
throw new PageNotFoundException();
}
Но это не работает - я до сих пор ошибки 500 и пружинные журналы:
ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: ...
Обратите внимание, что я переводил код в html, поэтому ответ не может быть пустым или простым. Строка как с ResponseEntity
. web.xml
запись:
<error-page>
<location>/resources/error-pages/404.html</location>
<error-code>404</error-code>
</error-page>
FINAL РЕШЕНИЕ ОТ ОТВЕТА КОММЕНТАРИИ
Это не полный повторно бросить, но, по крайней мере, он использует страницу отображения web.xml
ошибки как мой PageNotFoundException
@ExceptionHandler(value = ArticleNotFoundException.class)
public void handle(HttpServletResponse response) throws IOException {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
Upvoted, но это работает как '404' код, но ** отправляет пустой ответ **. Это отличается от поведения с моим «PageNotFoundException», который переводится в .html-файл с помощью web.xml '' –
. См. Мое редактирование. Мне нравится 50%, что будет работать – JamesENL
. Несчастливо, он принимает эту строку пути как ответ тело, просто отображая его на странице. –