返回介绍

11.4.8 异常视图的处理

发布于 2025-04-22 22:09:17 字数 1420 浏览 0 评论 0 收藏

有时候系统运行过程中出现异常,而我们并不希望就此中断对用户的服务,而是至少告知客户当前系统在处理逻辑的过程中出现了异常,甚至告知他们因为什么原因导致的。Spring 中的异常处理机制会帮我们完成这个工作。其实,这里 Spring 主要的工作就是将逻辑引导至 HandlerExceptionResolver 类的 resolveException 方法,而 HandlerExceptionResolver 的使用,我们在讲解 WebApplicationContext 的初始化的时候已经介绍过了。

protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse

response,

Object handler, Exception ex) throws Exception {

  // Check registered HandlerExceptionResolvers...

  ModelAndView exMv = null;

  for (HandlerExceptionResolver handlerExceptionResolver : this.handlerException

Resolvers) {

   exMv =handlerExceptionResolver.resolveException(request, response, handler, ex);

   if (exMv != null) {

   break;

  }

 }

  if (exMv != null) {

   if (exMv.isEmpty()) {

    return null;

  }

   // We might still need view name translation for a plain error model...

   if (!exMv.hasView()) {

   exMv.setViewName(getDefaultViewName(request));

  }

   if (logger.isDebugEnabled()) {

    logger.debug("Handler execution resulted in exception - forwarding to

    resolved error view: " + exMv, ex);

  }

   WebUtils.exposeErrorRequestAttributes(request, ex, getServletName());

   return exMv;

 }

  throw ex;

}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。