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

时间:2012-10-19 22:07:59

标签: java exception

我刚刚读到“Oracle jdbc驱动程序抛出的一些SqlExceptions在cause字段中引用了它自己”。恕我直言可以让我自己尽可能轻松地从我的头发中pull myself出来。

但这似乎是正常的,即使Throwable.printStackTrace识别出“循环引用”,这也是我所知道的JDK中唯一这样的地方(例如,所有Arrays.deep*方法最终都会出现堆栈溢出递归结构)。

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

1 个答案:

答案 0 :(得分:2)

在这种情况下,

cause==this means that no cause has been initialized. getCause()将返回nullThrowable.printStackTrace中的代码用于处理多元素循环。我认为这种循环没有任何充分的理由,但也许有些人因为错误或恶意而陷入困境。