码迷,mamicode.com
首页 > 其他好文 > 详细

统一异常处理

时间:2016-06-15 20:35:20      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

分享一个WEB系统中统一异常处理类

package com.exception;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

/**
 * 统一异常处理,有效地针对异步和非异步请求
 * 不同异常会到不同页面
 * throw new ParameterException("XXXX")  ---- >  error-parameter.jsp
 * throw new SystemException("XXXX")  ---- >  error-System.jsp
 * throw new Exception("XXXX")  ---- >  error.jsp
 * Status  value
 * 1001 业务异常返回 1001
 * 1002 参数异常返回 
 * 1000 其他异常返回
 * @author lanyuan
 * @date 2014-12-10
 */
public class MyExceptionHandler implements HandlerExceptionResolver {

    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) {
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("ex", ex);
        //是否异步请求
         if (!(request.getHeader("accept").indexOf("application/json") > -1 || (request  
                 .getHeader("X-Requested-With")!= null && request  
                 .getHeader("X-Requested-With").indexOf("XMLHttpRequest") > -1))) {
            // 根据不同错误转向不同页面
                if(ex instanceof SystemException) {
                    response.setStatus(1001);//业务异常返回 1001
                    return new ModelAndView("WEB-INF/jsp/exception/error-system", model);
                }else if(ex instanceof ParameterException) {
                    response.setStatus(1002);//参数异常返回 1002
                    return new ModelAndView("WEB-INF/jsp/exception/error-parameter", model);
                } else {
                    response.setStatus(1000);//其他异常返回 1000
                    return new ModelAndView("WEB-INF/error", model);
                }
         }else{
             try {  
                 if(ex instanceof SystemException) {
                        response.setStatus(1001);//业务异常返回 1001
                    }else if(ex instanceof ParameterException) {
                        response.setStatus(1002);//参数异常返回 1002
                    } else {
                        response.setStatus(1000);//其他异常返回 1000
                    }
                 PrintWriter writer = response.getWriter();  
                 writer.write(ex.getMessage());  
                 writer.flush();  
             } catch (IOException e) {  
                 model.put("ex", e);
                 return new ModelAndView("WEB-INF/error", model);
             }  
             return null;  
         }
    }
}

 

统一异常处理

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/5588599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!