记一次日志被吞,只有异常类型,没有堆栈信息
一背景:
开发企业微信小程序,需要判断当前购买企业购买的版本是试用版还是付费版
二现象:
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 - 知乎
原文地址:https://blog.csdn.net/wit_cx/article/details/135946086
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!