Review Request JDK-8210721: Replace legacy serial exception field with Throwable::cause

mandy chung mandy.chung at oracle.com
Thu Sep 13 18:44:12 UTC 2018


A few exception classes such as ExceptionInInitializerError, 
InvocationTargetException,
etc were defined prior to the exception chaining facility and provides 
the API to get
the cause of the exception. These classes keep its legacy serial field e.g.
ExceptionInInitializerError::exception to get the serialization to work 
on older JDK version.

During the review of JDK-8209553 [1], Peter and Joe suggest to remove 
this legacy
serial field and implement the serialization using 
serialPersistentFields, readObject
and writeObject.   It turns out that these redundant fields were removed 
when the
exception chaining support was initially implemented but it got reverted 
to fix
JDK-4385429 since Throwable::setCause rejects any further change as
Throwable::cause has been initialized to null.

This patch removes these legacy serial field and stores the cause in 
Throwable::cause.
It's essentially a redo for the fix for JDK-4385429.

webrev:
http://cr.openjdk.java.net/~mchung/jdk12/webrevs/8210721/webrev.00/

Mandy
[1] 
http://mail.openjdk.java.net/pipermail/core-libs-dev/2018-August/054878.html 



More information about the core-libs-dev mailing list