一,异常抛出方式
方式1
if (eneity == null) { throw new WmsException(CommonCode.UPDATE_MONGO_ERROR); }
方式2
if (subjectEntity == null || subjectEntity.getDictEntities() == null || CollectionUtils.isEmpty(subjectEntity.getDictEntities())){ logger.error("参数异常"); throw new WmsException(RespCode.PARAM_IS_NULL, RespMsg.PARAM_IS_NULL_MSG); }
二,业务异常处理类
方式1
//错误代码 ResultCodeArc resultCode; 异常构造方法 public WmsException(ResultCodeArc resultCode){ this.resultCode = resultCode; } 错误码及信息接口 public interface ResultCodeArc { //操作代码 String code(); //提示信息 String message(); } 错误码及信息,定义类 @ToString public enum CommonCode implements ResultCodeArc{ INVALID_PARAM("10003","非法参数!"), SUCCESS("10000","操作成功!"), FAIL("11111","操作失败!"); //操作代码 String code; //提示信息 String message; private CommonCode(String code, String message){ this.code = code; this.message = message; } @Override public String code() { return code; } @Override public String message() { return message; } }
方式2
/** * 构造一个基本异常. * @param errorCode 错误编码 * @param message 信息描述 */ public WmsException(String errorCode, String message) { this(errorCode, message, true); } 错误码及信息,定义类
错误码类
public final class RespCode { /** 0000 成功 */ public static final String SUCCESS = "0000"; }
错误信息类
public final class RespMsg { /** * 0000 成功 */ public static final String SUCCESS_MSG = "成功"; }
三,业务异常处理类
/** * 异常类 */ public class WmsException extends RuntimeException { private static final long serialVersionUID = 1L; /** * 错误编码 */ private String errorCode; /** * 错误信息 */ private String errorMsg; /** * 消息是否为属性文件中的Key */ private boolean propertiesKey = true; //错误代码 ResultCodeArc resultCode; public WmsException(ResultCodeArc resultCode){ this.resultCode = resultCode; } public ResultCodeArc getResultCode(){ return resultCode; } /** * 构造一个基本异常. * @param message 信息描述 */ public WmsException(String message) { super(message); } /** * 构造一个基本异常. * @param errorCode 错误编码 * @param message 信息描述 */ public WmsException(String errorCode, String message) { this(errorCode, message, true); } /** * 构造一个基本异常. * @param errorCode 错误编码 * @param message 信息描述 * @param cause 根异常类(可以存入任何异常) */ public WmsException(String errorCode, String message, Throwable cause) { this(errorCode, message, cause, true); } /** * 构造一个基本异常. * * @param errorCode 错误编码 * @param message 信息描述 * @param propertiesKey 消息是否为属性文件中的Key */ public WmsException(String errorCode, String message, boolean propertiesKey) { super(message); this.setErrorMsg(message); this.setErrorCode(errorCode); this.setPropertiesKey(propertiesKey); } /** * 构造一个基本异常. * * @param errorCode 错误编码 * @param message 信息描述 * @param cause 根异常类(可以存入任何异常) * @param propertiesKey 消息是否为属性文件中的Key */ public WmsException(String errorCode, String message, Throwable cause, boolean propertiesKey) { super(message, cause); this.setErrorCode(errorCode); this.setPropertiesKey(propertiesKey); } /** * 构造一个基本异常. * * @param message 信息描述 * @param cause 根异常类(可以存入任何异常) */ public WmsException(String message, Throwable cause) { super(message, cause); } public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public boolean isPropertiesKey() { return propertiesKey; } public void setPropertiesKey(boolean propertiesKey) { this.propertiesKey = propertiesKey; } public String getErrorMsg() { return errorMsg; } public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } }
四,统一异常处理
/** ** GlobalExceptionHandler ** * @author wanglong * @version $Id: GlobalExceptionHandler.java, v 0.1 2018年3月16日 上午9:40:56 wanglong Exp $ */ @ControllerAdvice public class GlobalExceptionHandler { private static final Logger LOGGER = LogManager.getLogger(GlobalExceptionHandler.class); @ExceptionHandler(value = Exception.class) @ResponseBody public BaseResponseModel