package com.xsz.common.exception;

import java.text.ParseException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import com.xsz.common.domain.ResponseBo;

@ControllerAdvice
public class ControllerExceptionHandler {
    private Logger log = LoggerFactory.getLogger(this.getClass());

    @ExceptionHandler(NullPointerException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public ResponseBo NotFindException(NullPointerException e) {
        return ResponseBo.failure(404, "找不到相关信息---" + e.getMessage());
    }

    @ExceptionHandler(ParseException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public ResponseBo ParseException(ParseException e) {
        log.error("日期或者字符串格式化异常", e);
        return ResponseBo.error(e.getMessage());
    }
}
package com.xsz.common.domain;

import java.util.HashMap;

public class ResponseBo extends HashMap<String, Object>{

    private static final long serialVersionUID = -8713837118340960775L;

    // 成功
    private static final Integer SUCCESS = 0;
    // 警告
    private static final Integer WARN = 1;
    // 异常 失败
    private static final Integer FAIL = 500;
    
    public ResponseBo() {
        put("code", SUCCESS);
        put("msg", "操作成功");
    }
    
    public static ResponseBo error(Object msg) {
        ResponseBo responseBo = new ResponseBo();
        responseBo.put("code", FAIL);
        responseBo.put("msg", msg);
        return responseBo;
    }
    
    /**
     * 返回失败的带code的异常
     * @param code code
     * @param msg 提示
     * @return ResponseBo
     */
    public static ResponseBo failure(Integer code,String msg) {
        ResponseBo responseBo = new ResponseBo();
        responseBo.put("code", code);
        responseBo.put("msg", msg);
        return responseBo;
    }
    
    public static ResponseBo warn(Object msg) {
        ResponseBo responseBo = new ResponseBo();
        responseBo.put("code", WARN);
        responseBo.put("msg", msg);
        return responseBo;
    }
    
    public static ResponseBo ok(Object msg) {
        ResponseBo responseBo = new ResponseBo();
        responseBo.put("code", SUCCESS);
        responseBo.put("msg", msg);
        return responseBo;
    }
    
    public static ResponseBo ok() {
        return new ResponseBo();
    }
    
    public static ResponseBo error() {
        return ResponseBo.error("");
    }
    
    @Override
    public ResponseBo put(String key, Object value) {
        super.put(key, value);
        return this;
    }
}