首页 > 解决方案 > 自定义错误页面未捕获 tomcat 中引发的异常

问题描述

Spring Boot 很新——目前正在测试一个2.2.4.RELEASE配置最少的项目,因为目前正在尝试 Spring Boot,看看它是否满足我的需求。

我已经禁用了白标错误页面,我自己error.html使用thymeleaf了模板。

该项目将主要基于 REST,因此error.html只有当他们尝试通过浏览器访问内容/将接受标头设置为不支持的内容等时才会真正提供服务,对于其他所有内容,我都有一个控制器,上面标注了@RestControllerAdvice各种@ExceptionHandler不同的东西,这个大部分工作。

但是我遇到的问题是,如果我在 tomcat 中导致异常,即curl -H -i https://localhost:8443/%5C\' -k会导致 400 Bad Request,这会产生内置的 tomcat 错误页面(我不想要,谢天谢地,我已经隐藏了堆栈跟踪和异常:

server.error.include-stacktrace=never
server.error.include-exception=false

这个异常似乎永远不会传播到我的异常处理程序。我读过其他类似的问题,但没有一个建议有效,我现在迷路了。:-(

任何帮助,将不胜感激。

标签: javaspringspring-boot

解决方案


在 web.xml 上,您可以捕获这些 tomcat 级别的错误消息并显示您选择的页面,如下所示 -

    <error-page>
        <error-code>500</error-code>
        <location>/Error.html</location>
    </error-page>

    <error-page>
        <error-code>404</error-code>
        <location>/Error.html</location>
    </error-page>

    <error-page>
        <error-code>501</error-code>
        <location>/Error.html</location>
    </error-page>

  <error-page>
        <error-code>400</error-code>
        <location>/Error.html</location>
    </error-page>

推荐阅读