记一次日志被吞,只有异常类型,没有堆栈信息

文章讲述了在开发企业微信小程序时遇到的NullPointerException问题,由于堆栈信息不全,难以定位代码错误。解决方法包括使用线上数据替换、调整启动命令关闭OmitStackTraceInFastThrow以获取完整堆栈,但此操作可能带来性能影响。
摘要由CSDN通过智能技术生成
一背景:

        开发企业微信小程序,需要判断当前购买企业购买的版本是试用版还是付费版

二现象:

        Exception in thread "main" java.lang.NullPointerException 只打印了异常信息,无详细堆栈信息,导致无法判断具体是那行代码出现了空对象。

完整信息应该有以下堆栈信息

Exception in thread "main" java.lang.NullPointerException
	at com.aerosoft.Test.main(Test.java:18)
三简略代码:
Integer type = qyWxService.getQyWxType(corpid);
    switch (type){
        case 0:
            doXX();
            break;
        case 1:
            doX();
            break;
        default:
            break;
}
四解决办法:

       方法一:当时是down了一份线上数据,在本地运行代码发现type为空,修复后重新发布。

       方法二:启动命令加入 -XX:-OmitStackTraceInFastThrow  关闭jdk1.5对多次重复出现的异常进行预编译,这些预编译的异常无堆栈信息,故无法打印完整堆栈。需注意是关闭FastThrow在大量抛出异常时可能会有意想不到的性能问题,比如一些JDK或者依赖库依赖异常来保证逻辑正确。

五参考资料:

异常堆栈缺失与OmitStackTraceInFastThrow - 知乎

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值