RFR JDK-8209553: ExceptionInInitializerError can have a default detail message if the cause is given
joe darcy
joe.darcy at oracle.com
Thu Aug 16 23:48:19 UTC 2018
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
More information about the core-libs-dev
mailing list