我在web.xml中配置了一个错误servlet:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/ExceptionHandler</location>
</error-page>
对?
在我的(通常)servlet中:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
...
...
} catch (Exception e) {
throw new ServletException("some mesage", e);
}
}
因此,在这种情况下,“ e”将是根本原因。
在我的ExceptionHandler类中,我有:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
throwable.getCause() //NULL
}
这就是问题。throwable.getCause()为null。
如果由servletcontainer捕捉到的异常是ServletException
和<error-page>
声明捕捉异常 其他
比ServletException
,那么它的原因实际上是打开并作为存储"javax.servlet.error.exception"
。因此,您基本上已经将其作为throwable
变量,并且不需要调用getCause()
它。
另请参阅Servlet
2.5规范
第9.9.2章的第5段:
如果没有使用类层次结构匹配的
error-page
包含声明的声明exception- type
,并且抛出的异常是其ServletException
子类或子类,
则容器将提取ServletException.getRootCause
方法定义 的包装后的异常
。对错误页面声明进行第二遍处理,再次尝试与错误页面声明进行匹配,但改用包装的异常。
顺便说一句,最好使用RequestDispatcher#ERROR_EXCEPTION
常量而不是对其进行硬编码。
Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
我有以下情况,我试图看看是否有解决方案: 两个Spring服务调用必须并行进行(一个是现有的服务调用/逻辑,另一个是新添加的服务调用) 然而,一条快乐的道路应该是直截了当的,当涉及到服务发出的错误时,应该遵守以下规则: > 如果其中只有一个失败,则通过另一个服务(异步)记录错误,并且API只返回成功服务的结果--这可以通过相应的线程来完成。 我的问题是,因为这些服务返回某个对象的列表,即使我使用并
当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置。 您必须在 web.xml 中使用 error-page 元素来指定对特定异常 或 HTTP 状态码 作出相应的 Servlet 调用。 web.xml 配置 假设,有一个 ErrorHandler 的 Servlet 在任何已定义的异常或错误出现时
问题内容: 有没有一种方法可以添加一个全局包罗万象的错误处理程序,可以在其中将响应更改为通用JSON响应? 我无法使用该信号,因为它不允许修改响应(http://flask.pocoo.org/docs/0.10/signals/)。 相反,所有信号处理程序均以未定义的顺序执行,并且不修改任何数据。 我宁愿不要包装该函数,因为感觉就像是内部API。我想我正在寻找类似的东西: 请注意,不会接受任何参
通过使用浏览器,当抛出错误时,我被正确地重定向到web.xml文件中指定的自定义错误页面 但是为什么我总是在curl的输出中看到默认的400错误页面及其跟踪?我缺少处理的异常类型(我使用的是java.lang.exception)或其他? 这是servlet的代码: 这是 web.xml 配置文件:
当程序出现错误或者异常时,我们一般会希望在开发时输出报错信息,在生产环境时隐藏详细的信息。 在 imi 中,提供了 Http 服务的错误异常默认处理器支持。 默认 Http 错误处理器:Imi\Server\Http\Error\JsonErrorHandler 指定默认处理器 配置文件中: return [ 'beans' => [ 'HttpErrorHan
有没有一种方法可以在Spring Boot异常处理程序中一次捕获从web请求抛出的所有异常?我知道我可以在用注释的方法中捕获异常类型数组,但它不是我所说的类型。我需要一个异常对象列表之类的东西。我已经试过了 但Spring无法找到合适的解析器: 它只捕捉一个可抛物体,工作很好: 但是,如果在同一请求中有不同的参数冲突,如和,该怎么办? 如果不可能处理异常列表,如何满足RFC-7807(参见http