Prior to JDK 1.4 the exception chaining mechanism didn't exist. If we're on JDK 1.4 we'll now call Throwable.initCause by reflection, otherwise we just keep a local copy of the chained exception. Added a readObject method so that instances of this class can be serialized/deserialized between JDK 1.4+ and JDK 1.3 (and below). git-svn-id: https://svn.apache.org/repos/asf/xml/commons/trunk@226209 13f79535-47bb-0310-9956-ffa450edef68