aigle code,关于异常的处理

来源:互联网 发布:php 打开xlsx文件乱码 编辑:程序博客网 时间:2024/06/10 06:11

今天下午应用出了点问题,由于已经同事已经离职因此只好偶接受,痛苦中……。最终发现因为网络错误导致有一个变量没有取到,但是他吞掉了这个错误,没有及时抛出,造成了业务逻辑的错误。

 

 remindJsonStr = getEmpByEmpId(msb.getOwnerEmpId());
 if ("".equals(remindJsonStr)) {
     Log4jUtil.getSimpleErrorLogger().info("Fail to get remindJsonStr");
 } else {
     MessageBody msb1;
     try {
          msb1 = this.cloneMessageBodyObject(msb, remindJsonStr);
          msb1.setMsgType("0");
          list.add(msb1);
     } catch (ParseException e1) {
          Log4jUtil.getSimpleErrorLogger().info("Fail to parse remindJsonStr:" + remindJsonStr);
          Log4jUtil.getNormalErrorLogger().info(e1);
        }
    }

 

其中这个getEmpByEmpId方法通过http调用的方式获取到了一个变量,但是对于异常只是做了以下的处理

catch (Exception e) {
   Log4jUtil.getNormalErrorLogger().error(e);

}

 

拿到今天的log发现,由于网络不太正常,造成了connection rest,因此只是进行了提示“Fail to get remindJsonStr”,之后跳过了else部分,从而造成了业务逻辑错误。

所以除非是能够真正解决异常(通常都是业务异常),否则一定要抛出,及时抛出,特别是依赖于外部环境(如依赖网络和数据库)的函数,更是要对异常仔细处理。

原创粉丝点击