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