前台系统和后台系统中异常的设计
后台系统:
后台系统应将异常信息完整地、准确地返回给前台系统。
如:
facade层
LoanFacadeImpl.java
//申请贷款
try {
String loanRecordNo = loanBiz.applyLoan(applyLoanParamDTO);
return loanRecordNo;
} catch(Exception e) {
logger.error("申请贷款失败[applyLoanParamDTO={}, errorMsg={}]", applyLoanParamDTO, e.getMessage(), e);
throw new FortisRuntimeException("申请贷款失败");
}
biz层
//验证参数的合法性
if (applyLoanParamDTO.getApplyAmount().compareTo(BigDecimal.ZERO) <= 0) {
throw new FortisBizException("申请金额小于等于零[applyAmount=" + applyLoanParamDTO.getApplyAmount() + "]");
}
if (applyLoanParamDTO.getApplyPeriod().intValue() <= 0) {
throw new FortisBizException("申请期限小于等于零[applyPeriod=" + applyLoanParamDTO.getApplyPeriod() + "]");
}
Date today = DateUtils.dayBegin(new Date());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
if (applyLoanParamDTO.getExpectRemitDate() != null && applyLoanParamDTO.getExpectRemitDate().before(today)) {
throw new FortisRuntimeException("申请贷款时期望放款日小于当前日期[expectRemitDate=" + dateFormat.format(applyLoanParamDTO.getExpectRemitDate()) + "]");
}
在biz层抛出的异常被facade层捕获之后需要重新抛出,目的是保留biz层抛出的异常信息,并把异常信息完整的抛出给前台系统。