Hello,
On 8/15/2018 5:10 PM, mandy chung wrote:
On 8/15/18 3:20 PM, Peter Levart wrote:
Hi Mandy,
Just a question. Why does "private Throwable exception" field in
ExceptionInInitializerError exist? Was it there before there was a
"cause" in Throwable and later still remained there because of
serialization format? Would it be possible to "simulate" its effect
for serialization using "serialPersistentFields" and
ObjectOutputStream.PutField?
Thanks for asking. I meant to mention this and it'd be nice to
follow up this in a separate issue.
The private exception field exists since 1.1 and kept there for
serialization. getException in existing releases returns the
exception field. I can't think of any way to remove the exception
field in JDK n to deserialize it with older JDK x unless JDK x was
changed to write the exception field with the cause or getException
to return cause.
Just a quick comment, it is possible, although a bit tedious, to remove
a field and retain serial compatibility if readObject/writeObject
methods are added to the new version of the class. There are a few
examples of doing this kind of conversion in the JDK, such as for
BigInteger.
HTH,
-Joe