springMVC --全局异常处理(两种方式)
来源:互联网 发布:梦幻西游淘宝租号 编辑:程序博客网 时间:2024/06/14 22:03
首先看springMVC的配置文件:
-
- <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
- <prop key="java.lang.Exception">errors/error</prop>
- <prop key="java.lang.Throwable">errors/err</prop>
- </props>
- </property>
- <property name="statusCodes">
- <props>
- <prop key="errors/error">500</prop>
- <prop key="errors/404">404</prop>
- </props>
- </property>
-
- <property name="warnLogCategory" value="WARN"></property>
-
- <property name="defaultErrorView" value="errors/error"></property>
-
- <property name="defaultStatusCode" value="500"></property>
- </bean>
-
这里主要的类是SimpleMappingExceptionResolver类,和他的父类AbstractHandlerExceptionResolver类。
可以看到源码中和上述配置对应的属性;
另外要注意的是日志
- <span style="font-size:14px;"><property name="warnLogCategory" value="WARN"></property></span>
级别设置为WARN:
也可以实现HandlerExceptionResolver接口或者继承SimpleMappingExceptionResolver,写一个自己的异常处理程序
- public class SpringMVCSimpleMappingExceptionResolver extends SimpleMappingExceptionResolver {
-
- public static final Log log = LogFactory.getLog(SpringMVCSimpleMappingExceptionResolver.class);
-
- @Override
- protected ModelAndView doResolveException(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex) {
- ModelAndView mv = null;
- String accept = request.getHeader("accept");
- if (accept != null && !(accept.indexOf("application/json") > -1
- || (request.getHeader("X-Requested-With") != null
- && request.getHeader("X-Requested-With").indexOf("XMLHttpRequest") > -1))) {
- mv = super.doResolveException(request, response, handler, ex);
- } else {
- try {
-
- PrintWriter writer = response.getWriter();
- writer.write(Return.failure((ex.getMessage())));
- writer.flush();
- } catch (IOException e) {
- if (log.isInfoEnabled()) {
- log.info(StringUtil.getTrace(e));
- }
- }
- }
- doLog((HandlerMethod) handler, ex);
- return mv;
- }
-
-
-
-
-
-
-
- private void doLog(HandlerMethod handler, Exception excetpion) {
- if (log.isEnabledExceptionDb()) {
-
- }
- }
- }
转载出处:http://blog.csdn.net/u014034854/article/details/47178729