===============================异常模板====================================
public class ErrorCodeException extends IllegalArgumentException {
/**
* 错误码
*/
private ErrorCodes errorCode;
/**
* 错误信息
*/
private String errorCodeStr;
public ErrorCodeException(String errorCode) {
super(errorCode);
this.errorCodeStr = errorCode;
}
public ErrorCodeException(ErrorCodes errorCode) {
super(errorCode.getDesc());
this.errorCode = errorCode;
}
public ErrorCodeException(ErrorCodes errorCode, String message) {
super(errorCode.getDesc() + message);
this.errorCode = errorCode;
}
public ErrorCodeException(String errorCode, String message) {
super(message);
this.errorCodeStr = errorCode;
}
public ErrorCodes getErrorCode() {
return errorCode;
}
public void setErrorCode(ErrorCodes errorCode) {
this.errorCode = errorCode;
}
public String getErrorCodeStr() {
return errorCodeStr;
}
public void setErrorCodeStr(String errorCodeStr) {
this.errorCodeStr = errorCodeStr;
}
public BaseResult getBaseResult() {
BaseResult result = new BaseResult();
result.setSuccess(false);
if (getErrorCode() != null) {
result.setErrorCode(getErrorCode().getCode());
if (getMessage() != null) {
result.setMessage(getMessage());
} else {
result.setMessage(getErrorCode().getDesc());
}
} else {
result.setErrorCode(getErrorCodeStr());
result.setMessage(getMessage());
}
return result;
}
}
===================业务层模板=========================
public interface ServiceTemplate {
/**
*
* 统一服务模板 1.异常捕获, 2.日志记录管理
*
* @param clazz
* 返回的对象
* @param action
* 业务操作回调接口
* @return 服务返回对象
*/
public <T> T execute(Class<? extends BaseResult> clazz, ServiceCallback action);
}
public class ServiceTemplateImpl implements ServiceTemplate {
/**
* log
*/
// private static final Logger logger = LoggerFactory.getLogger(ServiceTemplateImpl.class);
@Override
public <T> T execute(Class<? extends BaseResult> clazz, final ServiceCallback action) {
BaseResult result = null;
try {
result = clazz.newInstance();
/**
* 参数校验
*/
action.check();
/**
* 业务逻辑处理
*/
result = action.executeService();
} catch (InvalidParameterException e1) {
/**
* 参数异常捕获
*/
ErrorCodes code = ErrorCodes.CheckError;
String errString = String.format("%s %s", code.getDesc(), e1.getMessage());
System.err.printf("参数异常:{},{}", code.getCode(), errString);
result.setMessage(errString);
result.setSuccess(false);
result.setErrorCode(code.getCode());
} catch (ErrorCodeException e2) {
/**
* 错误码异常
*/
ErrorCodes code = e2.getErrorCode();
System.err.printf("错误码异常:{},{}", code.getCode(), e2.getMessage());
result.setSuccess(false);
result.setMessage(e2.getMessage());
result.setErrorCode(code.getCode());
} catch (Throwable e) {
/**
* 未知捕获异常
*
*/
ErrorCodes code = ErrorCodes.UnknownError;
String errString = String.format("%s %s", code.getDesc(), e.getMessage());
System.err.printf("未知捕获异常:{},{}", code.getCode(), e.getMessage());
result.setErrorCode(code.getCode());
result.setMessage(errString);
result.setSuccess(false);
}
return (T) result;
}
}
==================================校验===========================
public interface ServiceCallback {
/**
* 校验, 对于校验不通过,异常驱动返回
*/
void check();
/**
* 执行业务逻辑
*
* @return
*/
BaseResult executeService();
}