时间:2021-05-19
在 JavaEE 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。
SpringMvc 对于异常处理这块提供了支持,通过 SpringMvc 提供的全局异常处理机制,能够将所有类型的异常处理从各个处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护。
配置 SimpleMappingExceptionResolver 对象
<bean class="org.springframework.web.servlet.handler.SimpleMappingException Resolver"> <property name="defaultErrorView" value="error"></property> <property name="exceptionAttribute" value="ex"></property> <property name="exceptionMappings"> <props> <prop key="com.xxx.exception.BusinessException">error1</prop> <prop key="com.xxx.exception.ParamsException">error2</prop> </props> </property></bean>实现 HandlerExceptionResolver 接口
@Componentpublic class GlobalException implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { Map<String,Object> map=new HashMap<String, Object>(); map.put("ex", ex); ModelAndView mv=null; if(ex instanceof ParamsException){ return new ModelAndView("error_param", map); } if(ex instanceof BusinessException){ return new ModelAndView("error_business", map); } return new ModelAndView("error", map); } }使用实现 HandlerExceptionResolver 接口的异常处理器进行异常处理,具有集成简单、有良好的扩展性、对已有代码没有入侵性等优点,同时,在异常处理时能获取导致出现异常的对象,有利于提供更详细的异常处理信息。
页面处理器继承 BaseController
public class BaseController { @ExceptionHandler public String exc(HttpServletRequest request,HttpServletResponse response,Exception ex){ request.setAttribute("ex", ex); if(ex instanceof ParamsException){ return "error_param"; } if(ex instanceof BusinessException){ return "error_business"; } return "error"; } }使用 @ExceptionHandler 注解实现异常处理,具有集成简单、有扩展性好(只需要将要异常处理的 Controller 类继承于 BaseController 即可)、不需要附加 Spring 配置等优点,但该方法对已有代码存在入侵性(需要修改已有代码,使相关类继承于 BaseController),在异常处理时不能获取除异常以外的数据。
对于 Unchecked Exception 而言,由于代码不强制捕获,往往被忽略,如果运行期产生了 Unchecked Exception,而代码中又没有进行相应的捕获和处理,则我们可能不得不面对尴尬的 404、500……等服务器内部错误提示页面。我们需要一个全面而有效的异常处理机制。目前大多数服务器也都支持在 Web.xml 中通过 (Websphere/Weblogic) 或者 (Tomcat) 节点配置特定异常情况的显示页面。修改 web.xml 文件,增加以下内容: java.lang.Throwable /500.jsp 500 /500.jsp 404 /404.jsp
以上就是SpringMVC全局异常处理的三种方式的详细内容,更多关于SpringMVC全局异常处理的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文首先将会回顾Spring5之前的SpringMVC异常处理机制,然后主要讲解SpringBoot2Webflux的全局异常处理机制。SpringMVC的异常
目录无SpringMVC全局异常时的流程图SpringMVC全局异常流程图其实是一个ModelAndView对象配置文件applicationcontext.x
SpringMVC上传文件的三种实现方式,直接上代码吧,大伙一看便知前台:
这篇文章主要介绍了SpringMVC-统一异常处理三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.SpringMVC默认三个异常处理类ExceptionHandlerExceptionResolver:处理@ExceptionHandler注解Respo