在使用eclipse IDE调试HttpClientErrorException时,我注意到属性“cause”包含对错误本身的引用,因此我进行了遍历,发现该属性是“cause”,一次又一次……永远。
为什么此属性包含对自身的引用?
最佳答案
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/