java - Why property ''cause" of Exception is repeating forever? -


while debugging eclipse ide httpclienterrorexception noticed property "cause" contains reference error itself, went through , there property "cause" again, , again ... forever.

why property contains reference itself?

cause

throwable declares

private throwable cause = this; 

if cause not initialized, either passing cause in constructor or calling initcause, continue point this. note consequently getcause implemented as:

public synchronized throwable getcause() {     return (cause==this ? null : cause); } 

update:

the reason design explained in throwable:

to allow throwable objects made immutable , safely reused jvm, such outofmemoryerrors, fields of throwable writable in response user actions, cause, stacktrace, , suppressedexceptions obey following protocol:

1) fields initialized non-null sentinel value indicates value has logically not been set.

2) writing null field indicates further writes forbidden

3) sentinel value may replaced non-null value.

for example, implementations of hotspot jvm have preallocated outofmemoryerror objects provide better diagnosability of situation. these objects created without calling constructor class , fields in question initialized null. support capability, new fields added throwable require being initialized non-null value require coordinated jvm change.


Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -