在使用eclipse IDE调试HttpClientErrorException时,我注意到属性“cause”包含对错误本身的引用,因此我进行了遍历,发现该属性是“cause”,一次又一次……永远。

为什么此属性包含对自身的引用?

java - 为什么“属性 ''引起异常”永远重复?-LMLPHP

最佳答案

Throwable声明

private Throwable cause = this;

如果原因未初始化(通过在构造函数中传递原因或调用initCause),它将继续指向this。请注意,因此getCause实现为:
public synchronized Throwable getCause() {
    return (cause==this ? null : cause);
}

更新:
Throwable中也解释了这种设计的原因:

关于java - 为什么“属性 ''引起异常”永远重复?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35230698/

10-12 23:56