JSON返回封装类 package com.yingjun.ssm.dto;import com.fasterxml.jackson.annotation.JsonInclude;import java.io.Serializable;/** * * * ajax 请求的返回类型封装JSON结果 */public class BaseResult implements Serializable {private
          package com.yingjun.ssm.dto; import com.fasterxml.jackson.annotation.JsonInclude; import java.io.Serializable; /** * * * ajax 请求的返回类型封装JSON结果 */ public class BaseResult异常枚举基类implements Serializable { private static final long serialVersionUID = -4185151304730685014L; private boolean success; private T data; private String error; public BaseResult(boolean success, String error) { this.success = success; this.error = error; } public BaseResult(boolean success, T data) { this.success = success; this.data = data; } public boolean isSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } public T getData() { return data; } public void setData(T data) { this.data = data; } public String getError() { return error; } public void setError(String error) { this.error = error; } @Override public String toString() { return "BaseResult [success=" + success + ", data=" + data + ", error=" + error + "]"; } } 
package com.yingjun.ssm.enums;
/**
 * 业务异常基类,所有业务异常都必须继承于此异常 定义异常时,需要先确定异常所属模块。 例如:无效用户可以定义为 [10010001]
 * 前四位数为系统模块编号,后4位为错误代码 ,唯一。
 *
 */
public enum ResultEnum {
	// 数据库想操作异常
	DB_INSERT_RESULT_ERROR(99990001, "db insert error"),
	DB_UPDATE_RESULT_ERROR(99990002, "db update error"),
	DB_SELECTONE_IS_NULL(99990003,"db select return null"),
	// 系统异常
	INNER_ERROR(99980001, "系统错误"), 
	TOKEN_IS_ILLICIT(99980002, "Token验证非法"), 
	SESSION_IS_OUT_TIME(99980003, "会话超时"),
	// 用户相关异常
	INVALID_USER(1001001, "无效用户");
	private int state;
	private String msg;
	ResultEnum(int state, String msg) {
		this.state = state;
		this.msg = msg;
	}
	public int getState() {
		return state;
	}
	public String getMsg() {
		return msg;
	}
	public static ResultEnum stateOf(int index) {
		for (ResultEnum state : values()) {
			if (state.getState() == index) {
				return state;
			}
		}
		return null;
	}
} 
 异常统一处理
 
package com.yingjun.ssm.exception;
import com.alibaba.fastjson.JSON;
import com.yingjun.ssm.dto.BaseResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
/**
 * 错误信息统一处理
 * 对未处理的错误信息做一个统一处理
 * @author yingjun
 *
 */
@Component
public class GlobalExceptionResolver implements HandlerExceptionResolver {
	private final Logger LOG = LoggerFactory.getLogger(this.getClass());
	
	@ResponseBody
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
		LOG.error("访问" + request.getRequestURI() + " 发生错误, 错误信息:" + ex.getMessage());
		//这里有2种选择
		//跳转到定制化的错误页面
	    /*ModelAndView error = new ModelAndView("error");
		error.addObject("exMsg", ex.getMessage());
		error.addObject("exType", ex.getClass().getSimpleName().replace("\"", "'"));*/
		//返回json格式的错误信息
		try {
			PrintWriter writer = response.getWriter();
			BaseResult
 
   result=new BaseResult(false, ex.getMessage());
			writer.write(JSON.toJSONString(result));
			writer.flush();
		} catch (Exception e) {
			LOG.error("Exception:",e);
		}
		return null;
	}
}
   
 自定义异常
 
/**
 * 自定义异常
 */
public class BizException extends RuntimeException {
	private static final long serialVersionUID = 1L;
	public BizException(String message) {
        super(message);
    }
    public BizException(String message, Throwable cause) {
        super(message,  cause);
    }
}
        
        