exception不打印堆栈信息
不出现堆栈信息情况
1.使用问题
1 |
|
应使用
1 |
|
- jvm的优化(fast throw)
白话一点来说,就是:当一些异常类型(空指针、下标越界、算术运算等…)在代码里的固定位置被抛出多次,虚拟机(HotSpot VM)会直接 抛出一个事先分配好、类型匹配的异常对象。此异常对象的 message 和 stack trace 都为空
就是因为某一个异常在同一个地方多次被抛出,JVM 抛出一个预分配异常,那么 message、stack trace 相当于被吞掉了。
JDK 1.5 的发布文档介绍中描述了此情况,出现这种优化方案的原因是 为了提高性能。当同一种异常在相同的位置被抛出多次,编译器就会重新编译此方法。重编译后,编译器可能会 使用不提供堆栈跟踪的预分配异常 来选择更快的策略。
可以使用 -XX:-OmitStackTraceInFastThrow关闭这种预分配异常的机制。
Fast throw 机制支持的五种异常情况:
空指针异常
算术异常
数组下标越界异常
arrayStoreException
classCastException
验证:
1 |
|
exception不打印堆栈信息
http://hanqichuan.com/2022/06/08/java/exception不打印堆栈信息/