我正在用Spring4.0.4和Spring Boot1.0.2编写一个web应用程序,使用Tomcat作为嵌入式web容器,我想实现一个全局异常处理,以截取所有异常并以特定的方式记录它们。我的简单要求是:
@Controller
@RequestMapping("/errors")
public class ErrorHandler implements EmbeddedServletContainerCustomizer
{
@Override
public void customize(final ConfigurableEmbeddedServletContainer factory)
{
factory.addErrorPages(new ErrorPage("/errors/unexpected"));
factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/errors/notfound"));
}
@RequestMapping("unexpected")
@ResponseBody
public String unexpectedError(final HttpServletRequest request)
{
return "Exception: " + request.getAttribute("javax.servlet.error.exception");
}
@RequestMapping("notfound")
@ResponseBody
public String notFound()
{
return "Error 404";
}
}
结果是,UnexpectedErr
方法正确处理了控制器中抛出的异常,NotFound
方法处理了404状态代码。到目前为止还不错,但我有以下问题:
javax.servlet.error.exception
获取if。这甚至不是抛出的异常,它是org.springframework.web.util.NestedServletException
的一个实例,我必须深入研究这个嵌套异常以获取真正的异常。我很肯定有更简单的方法,但我找不到。那么我该如何解决这些问题呢?或者也许我实现这个全局异常处理程序的方式是完全错误的,还有更好的替代方案?
查看ControllerAdvice您可以执行以下操作:
@ControllerAdvice
public class ExceptionHandlerController {
public static final String DEFAULT_ERROR_VIEW = "error";
@ExceptionHandler(value = {Exception.class, RuntimeException.class})
public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) {
ModelAndView mav = new ModelAndView(DEFAULT_ERROR_VIEW);
mav.addObject("datetime", new Date());
mav.addObject("exception", e);
mav.addObject("url", request.getRequestURL());
return mav;
}
}
在 node.js中,通常的做法是将错误消息作为回调函数的第一个参数返回。在纯JS中有许多解决方案(promise,步骤,seq等),但它们似乎都无法与ICS集成。在不损失太多可读性的情况下处理错误的正确解决方案是什么? 例如:
问题内容: 当我的网站是100%jQuery时,我曾经这样做: 为401错误设置全局处理程序。现在,我将angularjs与和一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗? 问题答案: 我还在建立一个带有angular的网站,并且遇到了同样的障碍来处理全局401。当我遇到此博客文章时,我最终使用了HTTP拦截器。也许您会发现它和我一样有用。 “基于An
问题内容: 有没有一种方法可以添加一个全局包罗万象的错误处理程序,可以在其中将响应更改为通用JSON响应? 我无法使用该信号,因为它不允许修改响应(http://flask.pocoo.org/docs/0.10/signals/)。 相反,所有信号处理程序均以未定义的顺序执行,并且不修改任何数据。 我宁愿不要包装该函数,因为感觉就像是内部API。我想我正在寻找类似的东西: 请注意,不会接受任何参
我有一个带post请求的控制器。我试图用一个简单的NotNull注释验证POJO。我正在使用ControllerAdvice来处理异常。 所以我尝试使用它,但当我启动应用程序时,我得到了以下信息: 因此,我想为BindException创建自己的处理程序,但当我为BindException类创建ExceptionHandler时,spring应用程序不会启动。如果我注释掉handleBindExc
我正在使用Apollo与用React编写的Web应用程序中的GraphQL服务器进行交互。我试图在应用程序中实现错误处理,并依赖于apollo-link-error。 现在,我需要处理两类错误: 可以在执行Apollo查询或变异的组件中本地处理的错误,即需要在其上显示上下文错误信息的无效表单字段 可以全局处理的错误,例如,通过在页面的某个位置显示toast通知来显示错误详细信息 显然,一旦错误在本
本文向大家介绍springboot全局异常处理详解,包括了springboot全局异常处理详解的使用技巧和注意事项,需要的朋友参考一下 一、单个controller范围的异常处理 说明: 在controller中加入被@ExceptionHandler修饰的类即可(在该注解中指定该方法需要处理的那些异常类) 该异常处理方法只在当前的controller中起作用 二、全部controller范围内起