最近有多次发现项目的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.
相关推荐
比如说:应该要提示:“单据编码不允许为空”,却提示:“错误信息:Server Component wrap a Throwable. Exception Type is [javax.ejb.TransactionRolledbackLocalException]” 2、 记录的错误与实际遇到的错误不...
NULL 博文链接:https://sunfish.iteye.com/blog/1534890
//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插件
java Exception中Throwable和Exception之间的区别
主要介绍了Java中所有错误和异常的父类java.lang.Throwable,文章中简单地分析了其源码,说明在代码注释中,需要的朋友可以参考下
用法从javascript中的Error继承的许多解决方案容易出错(双关语)和棘手。 使用这个库,你可以继承Error就像你从任何其他 javascript 对象/类继承一样。 这是使用库的示例。 var Throwable = require ( 'throwable' ...
Jboss启动报Failed to parse WEB-INFweb.xml; - nested throwable错误
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 ...
throw new java.text.ParseException(ex.getMessage(), 0); } java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(ipConfigResponse, "\n"); String lastMacAddress = null; while(tokenizer....
13 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL 14 void removeAttribute(String name) 删除某属性 15 void removeAttribute(String name,int scope) 在指定范围删除某属性 16 ...
捕获Exception时,不会捕获error,像out of memory这种问题会在中间件的日志可以看到,访问程序也会报相应的错误,方便问题定位;捕获Throwable时,会捕获Exception和Error,像out of memory这种问题也会被捕获到,...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 BIO BIO NIO 和 AIO 的区别什么是流 流的分类 节点流和处理流 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异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是由硬件系统或JVM导致的故障,java定义该故障为Error,这类问题是用户程序不能够处理的;另外一种问题是程序...
before方法会在目标对象的指定方法执行之前被执行,在before方法种,你可以取得指定方法的Method实例、参数列表和目标对象,在before方法执行完后,目标对象上的方法将会执行,除非在before方法种抛出异常。...