Java 为什么因果链中的循环会被使用?

Java 为什么因果链中的循环会被使用?,java,exception,Java,Exception,我刚刚读到“OracleJDBC驱动程序引发的一些SQLException在原因字段中引用了自身”。我想,一个例外会像我头发从沼泽中爬出来一样容易 但这似乎很正常,甚至是可丢弃的。printStackTrace可识别“循环引用”,这是我所知道的JDK中唯一这样的地方(例如,所有数组。deep*方法最终都会导致递归结构的堆栈溢出) 那么,在原因链中创建周期的原因是什么呢?getCause()在这种情况下将返回null。Throwable.printStackTrace中的代码用于处理多元素循环。我

我刚刚读到“OracleJDBC驱动程序引发的一些SQLException在原因字段中引用了自身”。我想,一个例外会像我头发从沼泽中爬出来一样容易

但这似乎很正常,甚至是可丢弃的。printStackTrace可识别“循环引用”,这是我所知道的JDK中唯一这样的地方(例如,所有
数组。deep*
方法最终都会导致递归结构的堆栈溢出)


那么,在原因链中创建周期的原因是什么呢?

getCause()
在这种情况下将返回
null
Throwable.printStackTrace
中的代码用于处理多元素循环。我认为这样的循环没有什么好的理由,但可能有一些是由于bug或恶意而进入的。

好吧,你得问问Oracle的作者。对我来说只是个虫子。