我刚刚读到“Oracle jdbc 驱动程序抛出的一些 SqlExceptions 在原因字段中引用了自身”。恕我直言,一个例外很容易引起,就像我可以将自己从头发的沼泽中拉出来一样容易。
但这似乎很正常,甚至可以Throwable.printStackTrace
识别“循环引用”,这是我所知道的 JDK 中唯一这样的地方(例如,所有Arrays.deep*
方法最终都会导致递归结构的堆栈溢出)。
那么在原因链中创建循环的原因是什么?
cause==this
表示没有初始化任何原因。 在这种情况下getCause()
会返回。null
中的代码Throwable.printStackTrace
用于处理多元素循环。我认为这样的循环没有任何充分的理由,但也许有些是由于错误或恶意而进入的。