JSONObject放入null的后果

今天在做接口调用的时候出现一个严重bug,造成了死循环的后果,记录一下相关的错误详情

首先描述一下业务需求:

两个接口 :1 获取数据接口(下面简称A) 2 通知处理结果接口(下面简称B)
定时任务调用A接口获取数据,分条处理,处理完成后调用B接口通知处理完成,再次调用A接口获取时,会忽略调用过B接口的数据,考虑到方法处理中会出现异常,整个方法用try-catch包裹,抓到异常的时候同样调用B接口通知。
问题来了,调用B接口的时候有一个字段是"errorMessage",我在catch块里面放入了e.getMessage(),代码如下

catch (Exception e) {
            reObj.put("errorMessage",e.getMessage());
            reObj.put("errorCode","-3");
        }

我以为不会出现问题,谁知道马上就面临了社会的毒打。
在逻辑处理的过程中,产生了空指针异常,而空指针异常这种运行期异常,e.getMessage()返回的是null,并且json在put的值是null的时候,不会做任何处理,直接就是空的

这种情况就导致了我调用的B接口不能通过,调用A接口的时候继续返回上一次未通过的数据,然后继续空指针,继续B接口不通过。。。。。。子子孙孙无穷匮也。。。。
最后,自己写一个方法去处理异常,确保不会返回null

  public static String exceptionToString(Throwable t) {
        StringBuilder buf = new StringBuilder();
        if (t.getCause() != null) {
            buf.append(exceptionToString(t.getCause()));
        }

        buf.append("Exception class : " + t.getClass().getName());
        buf.append("\r\n");
        if (!t.getMessage().equals("")) {
            buf.append(t.getMessage());
            buf.append("\r\n");
        }
        for (int i = 0; i < t.getStackTrace().length; i++) {
            buf.append(t.getStackTrace()[i].toString()).append("\r\n");
        }
        return buf.toString();

    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,845评论 0 11
  • 八、深入理解java异常处理机制 引子try…catch…finally恐怕是大家再熟悉不过的语句了, 你的答案是...
    壹点零阅读 1,648评论 0 0
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,064评论 0 13
  • java事务的处理 转 https://www.cnblogs.com/Bonker/p/5417967.html...
    小小的Jobs阅读 1,451评论 0 1
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,272评论 0 2