代码改变世界

支付宝账户通项目感想

2013-09-28 23:19  VinpleZhang  阅读(275)  评论(0编辑  收藏  举报

设计异常类

TaoBaoSysNoReturnException   只需打印给本地服务器后台日志,用户调试自己用
TaoBaoSysReturnException  返回给支付宝看的的错误信息
DataBaseException 数据库异常,既可以返回给支付宝,也可以打印在本地服务器日志
TaoBaoCommonException 一些字段校验的异常,有不为空,字段长度等

 还有亮哥说 异常如果不是用来传递数据的话  简直就没什么用了!

异常类抛出层次  一级一级反馈

 

a()thorows DataBaseException{

b();

}

b()throws DataBaseException(){

if (CommonUtil.isEmpty(entity.getUUID()))
   throw new DataBaseException("唯一编码不能为空!");

 

try {
   entity.setMakeDate(CommonUtil.getCurrStrDate());
   entity.setMakeTime(CommonUtil.getCurrentTime());

   dao.updateByPrimaryKey(TaoBaoSerialLogMapper.class, entity);
  } catch (Exception e) {
   e.printStackTrace();
   throw new DataBaseException("数据库异常!");
  }

 

 

}

 

 

 

项目实际案例

public void deal(HttpServletRequest req, HttpServletResponse res,
   byte[] byteInputStream, String checkOpenFlag, String comCode,
   String rootpath) {
  mRequest = req;
  mResponse = res;
  try {
   // 1.MD5校验 MD5CheckException
   checkMD5(byteInputStream, checkOpenFlag, comCode, mRequest
     .getParameter("sign"));

   // 2.判断是否存在日志目录,不存在则创建
   createDir(rootpath);

   // 获取JDOM对象
   mNoStdDocumentRequest = getDocument(byteInputStream);

   // 3.备份非标准报文
   backNoStdFile();

   // 4.将DOUMENT是数据存入baseinfo,并校验
   mBaseInfoUtil = insertBaseInfo(rootpath);

   // 5.核保接口中增加字段类型判断,如果判断错误,则返回错误提示信息 CheckInfoException
   checkInfo();

   // 6.校验商家编码
   checkTBPlan();

   // 7.接收报文转换
   mStdDocumentRequest = requestTransfer();

   // 8.防止多次点击校验 包括核保、出单多次点击校验、出单报文校验核保成功、 幂等性校验
   if (!doubleClick()) {
    // 9.校验身份证信息
    checkIDAndName();

    return2TaoBao();
   }
  } catch (TaoBaoSysNoReturnException eTaoBaoSysNoReturnException) {
   eTaoBaoSysNoReturnException.printStackTrace();
   logger.info(eTaoBaoSysNoReturnException.getMessage());
   returnError(eTaoBaoSysNoReturnException.getMessage());
  } catch (TaoBaoSysReturnException eTaoBaoSysReturnException) {
   eTaoBaoSysReturnException.printStackTrace();
   logger.info(eTaoBaoSysReturnException.getMessage());
   returnSysError(eTaoBaoSysReturnException.getMessage());
  } catch (DataBaseException eDataBaseException) {
   eDataBaseException.printStackTrace();
   logger.info(eDataBaseException.getMessage());
   returnSysError(eDataBaseException.getMessage());
  } catch (TaoBaoCommonException eTaoBaoCommonException) {
   eTaoBaoCommonException.printStackTrace();
   logger.info(eTaoBaoCommonException.getMessage());
   returnCommnonError(eTaoBaoCommonException.getMessage());
  }
 }