最近有多次发现项目的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.
相关推荐
在Spring框架中,事务管理是核心功能之一,它允许开发者以声明式或编程式的方式处理应用中的事务。本文将深入探讨“spring-控制事物回滚”这一主题,结合标签“源码”和“工具”,我们将从源代码层面理解Spring如何...
测试用例设计是软件测试的关键环节,其目的是为了有效地找出软件中的错误和缺陷。本文将深入探讨等价类划分方法,这是一种广泛...在实际应用中,结合其他测试方法如边界值分析、决策表法等,可以进一步提升测试效果。
System.out.println("捕获到了Throwable: " + e.getMessage()); } } } // 测试捕获Exception new TestClass().testFunction(); // 测试捕获Throwable new TestClass().testFunction(); ``` 在上面的示例中,...
//Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); if (ex instanceof HttpException) { // 网络错误 HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode();...
System.err.println("Error occurred: " + throwable.getMessage()); return null; }); } } ``` 在上面的代码中,我们向OpenWeatherMap API发送了一个GET请求,其中包含城市名(北京)和API密钥。`HttpResponse...
在软件开发过程中,测试用例的编写是质量保证的关键环节,尤其...通过深入理解和实践这些知识,初学者能够建立起一套完整的软件测试用例编写体系,从而在实际工作中有效地找出并解决软件的问题,保障产品的高质量发布。
在Java编程语言中,`java.lang.Throwable` 是所有错误(Error)和异常(Exception)的顶级父类,它是异常处理机制的基础。`Throwable` 类提供了封装异常信息的方法和属性,使得开发者能够对程序中出现的问题进行捕获...
jquery.throwable:使HTML元素可抛出的JQuery插件
- nested throwable错误解决方案 在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析,并提供解决方案。 错误原因 Jboss应用...
- 功能说明:该方法用于返回`Throwable`对象的详细消息字符串。 - 用法示例: ```java try { int i = 12 / 0; // 除以零错误 } catch (Exception ex) { System.out.println(ex.getMessage()); } ``` - ...
Log.v("LinNetError", throwable.getMessage()); callBack.onFailure(ExceptionHandle.handleException(throwable)); return null; } }) // 订阅并处理请求结果 .subscribe(new Subscriber<BaseResponse<T>>...
java Exception中Throwable和Exception之间的区别
- 在访问数组元素之前,检查索引是否合法(通常是在数组的长度范围内)。 - 使用循环时,注意循环边界条件。 ##### 5. `java.lang.IllegalArgumentException` - **异常路径**:`java.lang.Object -> java.lang....
System.out.println("异常后通知:在方法抛出异常后运行:" + ex.getMessage()); } } ``` **3. 环绕通知(Around Advice)** 环绕通知是最强大的通知类型,它在方法调用前后都可以执行自定义逻辑,甚至可以决定...
out.println("字符编码转换错误:" + e.getMessage()); } ``` 3.Response对象类:HttpServletResponse Response对象代表服务器对客户端的响应,主要用来设置响应头、响应状态以及向客户端发送数据。例如,设置...
在Android平台上实现MQTT(Message Queuing Telemetry Transport)推送服务是一项常见的任务,尤其是在构建实时通信的应用中。MQTT是一种轻量级的发布/订阅消息协议,非常适合资源有限的设备和低带宽、高延迟的网络...
Log.e("MQTT", "Connection failed: " + exception.getMessage()); } }); ``` 5. 订阅主题 使用`subscribe()`方法订阅感兴趣的MQTT主题: ```java client.subscribe("your/topic", 0, null, new ...
在`doInBackground()`方法中执行网络请求,然后在`onPostExecute()`方法中处理返回的数据。下面是一个简单的`AsyncTask`例子: ```java private class NetworkRequestTask extends AsyncTask, Void, String> { @...
System.out.println("异常通知:捕获的异常信息:" + e.getMessage()); } ``` 5. **环绕通知**: 环绕通知是最强大的通知类型,它允许在方法调用前后执行自定义的行为,包括控制方法的执行是否继续。环绕通知使用`...
logError(null, t.getMessage(), t); } public static void logError(String bundleID, Throwable t) { logError(bundleID, t.getMessage(), t); } public static void logError(String bundleID, String ...