`
aigo
  • 浏览: 2546293 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

在循环内Throwable.getMessage()第二次总是返回null的解决方法

阅读更多

 

最近有多次发现项目的log日志中有很多奇怪的异常:

Java ArrayIndexOutOfBoundsException: null

一般异常信息应该是:

Java ArrayIndexOutOfBoundsException: -1

 

开始没太注意,后来多次碰到后觉得这样下去不是办法,上线后还出现这种问题那就麻烦大了,所以决定今天一定要解决掉。

 

为什么会有null的信息呢,后面调试发现,第一次执行都是完整的很长的堆栈信息,但相同位置出现第二次异常时,堆栈就很短,而且e.getMessage()返回null,我以为是我jdk版本升级到1.7的原因(怀疑最近JDK对异常做了优化),切换到1.6还是出现这种情况,后来在网上找了很多答案,终于找到了确切原因,那就是JIT对循环内的异常堆栈进行了优化。

 

原文:http://stackoverflow.com/questions/6538792/why-does-throwable-getmessage-occasionally-return-null

 

Found the answer on a similar question.

The JIT compiler will optimize away stack traces in certain exceptions if they happen enough.

The JVM flag -XX:-OmitStackTraceInFastThrow prevents this behavior and seems to fix the flickering unit tests.

 

  • 大小: 47.2 KB
分享到:
评论

相关推荐

    软件测试用例方法总结

    比如说:应该要提示:“单据编码不允许为空”,却提示:“错误信息:Server Component wrap a Throwable. Exception Type is [javax.ejb.TransactionRolledbackLocalException]” 2、 记录的错误与实际遇到的错误不...

    spring-控制事物回滚

    NULL 博文链接:https://sunfish.iteye.com/blog/1534890

    xUtils3 demo

    //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); if (ex instanceof HttpException) { // 网络错误 HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode();...

    软件测试用例编写资料汇总

    测试用例的辅导资料 非常适合做软件测试的初学者 好好学习 资源共享!!

    jquery.throwable:使HTML元素可抛出的JQuery插件

    jquery.throwable:使HTML元素可抛出的JQuery插件

    throwable 和 exception区别

    java Exception中Throwable和Exception之间的区别

    解析Java中所有错误和异常的父类java.lang.Throwable

    主要介绍了Java中所有错误和异常的父类java.lang.Throwable,文章中简单地分析了其源码,说明在代码注释中,需要的朋友可以参考下

    node-throwable:从 Error 继承而没有性能损失,instanceof 的行为符合预期并且错误堆栈是正确的

    用法从javascript中的Error继承的许多解决方案容易出错(双关语)和棘手。 使用这个库,你可以继承Error就像你从任何其他 javascript 对象/类继承一样。 这是使用库的示例。 var Throwable = require ( 'throwable' ...

    Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误

    Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码)

    MethodProxy proxy) throws Throwable { System.out.println("事物开始.........."); proxy.invokeSuper(obj, objs); System.out.println("事物结束.........."); return null; } /** * 创建...

    数据连接池

    如果是第一次调用此方法,则创建实例 * * @return DBConnectionManager 唯一实例 */ static synchronized public DBConnectionManager getInstance() { if (instance == null) { instance = new ...

    jsp探针 ver0.1

    throw new java.text.ParseException(ex.getMessage(), 0); } java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(ipConfigResponse, "\n"); String lastMacAddress = null; while(tokenizer....

    jsp内置对象的用法

    13 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL 14 void removeAttribute(String name) 删除某属性 15 void removeAttribute(String name,int scope) 在指定范围删除某属性 16 ...

    捕获Throwable和捕获Exception的区别验证

    捕获Exception时,不会捕获error,像out of memory这种问题会在中间件的日志可以看到,访问程序也会报相应的错误,方便问题定位;捕获Throwable时,会捕获Exception和Error,像out of memory这种问题也会被捕获到,...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    Java 基础核心总结 +经典算法大全.rar

    null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 BIO BIO NIO 和 AIO 的区别什么是流 流的分类 节点流和处理流 Java ...

    带注释的Bootstrap.java

    } catch (Throwable t) { handleThrowable(t); log.error("Class loader creation threw exception", t); System.exit(1); } } private ClassLoader createClassLoader(String name, ClassLoader parent) ...

    Java异常处理 Throwable实现方法解析

    主要介绍了Java异常处理 Throwable实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java创建用户异常类

    从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是由硬件系统或JVM导致的故障,java定义该故障为Error,这类问题是用户程序不能够处理的;另外一种问题是程序...

    spring aop 实现源代码--xml and annotation(带lib包)

    before方法会在目标对象的指定方法执行之前被执行,在before方法种,你可以取得指定方法的Method实例、参数列表和目标对象,在before方法执行完后,目标对象上的方法将会执行,除非在before方法种抛出异常。...

Global site tag (gtag.js) - Google Analytics