标签:
1、Spring MVC处理异常方式有以下三种
使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
实现HandlerExceptionResolver接口自定义异常处理器
使用@ExceptionHandler注解实现异常处理
2、使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
SimpleMappingExceptionResolver使用时,只需要在Spring的XML配置文件中定义下就可以了,定义示例如下
<!--SimpleMappingExceptionResolver配置-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMapping">
<props>
<prop key="java.lang.Exception">error</prop>
<prop key="com.tarena.TimeoutExcetion">login</prop>
</props>
</property>
</bean>
异常处理页面获取异常对象名exception,适合全局处理简单异常
3、实现HandlerExceptionResolver接口自定义异常处理器,定义实例如下:
public class MyMappingExceptionResolver implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest req,HttpServletResponse res, Object handler,Exception ex){ Map<String,Object> model=new HashMap<String, Object>(); model.put("ex",ex); //TODO 根据不同异常类型返回不同视图 return new ModelAndView("error",model); } }
适合全局处理有“处理过程”的异常
自定义的异常处理器需要在Spring的XML配置文件中定义下才可应用,定义实例如下
<bean id="exceptionHandler" class="com.tarena.interceptor.MyMappingExceptionResolver"/>
4、@ExceptionHandler注解实现异常处理,使用方法如下
首先编写一个BaseController类,定义如下
public class BaseController { @ExceptionHandler public String execute(HttpServletRequest req,Exception ex){ req.setAttribute("ex", ex); //TODO 可根据异常类型不同返回不同视图名 return "error"; } }
适合局部处理有“处理过程”的异常
然后其他的Controller继承BaseController类即可
5、对于框架内部异常或代码无法捕获的异常,可以在web.xml中通过<error-page>定义,目前绝大多数服务器都支持此配置。配置示例如下
<error-page> <exception-type>java.lang.Throwable</exception-type> <location>/WEB-INF/views/error/500.jsp</location> </error-page> <error-page> <exception-type>404</exception-type> <location>/WEB-INF/views/error/400.jsp</location> </error-page>
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4576145.html