package com.yanzuoguang.util; import com.yanzuoguang.util.exception.CodeException; import com.yanzuoguang.util.exception.RuntimeCodeException; import com.yanzuoguang.util.helper.JsonHelper; import com.yanzuoguang.util.helper.StringHelper; import java.util.HashMap; import java.util.Map; /** * 错误处理 * * @author 颜佐光 */ public class YzgErrorData { /** * 错误标记 */ public String TAG = StringHelper.EMPTY; /** * 错误缓存消息 */ private Map<String, String> ErrorCode = new HashMap<>(); public YzgErrorData(String TAG) { this.TAG = TAG; } /** * 添加错误信息 * * @param code 错误编码 * @param message 错误消息 */ public void add(String code, String message) { ErrorCode.put(code, message); } /** * 抛出异常 * * @param code * @param args */ public CodeException getCodeException(String code, Object... args) { return getCodeException(null, code, args); } /** * 抛出异常 * * @param code * @param args */ public CodeException getCodeException(Throwable ex, String code, Object... args) { String message = getMessage(ErrorCode, code, args); if (ex != null) { return new CodeException(TAG + code, message, ex); } else { return new CodeException(TAG + code, message); } } /** * 抛出异常 * * @param code * @param args */ public RuntimeCodeException getRuntimeException(String code, Object... args) { return getRuntimeException(null, code, args); } /** * 抛出异常 * * @param code * @param args */ public RuntimeCodeException getRuntimeException(Throwable ex, String code, Object... args) { String message = getMessage(ErrorCode, code, args); if (ex != null) { return new RuntimeCodeException(TAG + code, message, ex); } else { return new RuntimeCodeException(TAG + code, message); } } /** * 获取异常消息 * * @param errorCode * @param code * @param args * @return */ public String getMessage(Map<String, String> errorCode, String code, Object... args) { String message = errorCode.get(code); if (StringHelper.isEmpty(message)) { message = "未知错误" + JsonHelper.serialize(args); } else { try { message = String.format(message, args); } catch (Exception e) { e.printStackTrace(); } } return message; } }