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; } }