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

Reply via email to