< prev index next >

src/java.base/share/classes/java/lang/ClassNotFoundException.java

Print this page

        

*** 23,32 **** --- 23,37 ---- * questions. */ package java.lang; + import java.io.IOException; + import java.io.ObjectInputStream; + import java.io.ObjectOutputStream; + import java.io.ObjectStreamField; + /** * Thrown when an application tries to load in a class through its * string name using: * <ul> * <li>The <code>forName</code> method in class <code>Class</code>.
*** 55,73 **** * use serialVersionUID from JDK 1.1.X for interoperability */ private static final long serialVersionUID = 9176873029745254542L; /** - * This field holds the exception ex if the - * ClassNotFoundException(String s, Throwable ex) constructor was - * used to instantiate the object - * @serial - * @since 1.2 - */ - private Throwable ex; - - /** * Constructs a <code>ClassNotFoundException</code> with no detail message. */ public ClassNotFoundException() { super((Throwable)null); // Disallow initCause } --- 60,69 ----
*** 90,101 **** * @param s the detail message * @param ex the exception that was raised while loading the class * @since 1.2 */ public ClassNotFoundException(String s, Throwable ex) { ! super(s, null); // Disallow initCause ! this.ex = ex; } /** * Returns the exception that was raised if an error occurred while * attempting to load the class. Otherwise, returns {@code null}. --- 86,96 ---- * @param s the detail message * @param ex the exception that was raised while loading the class * @since 1.2 */ public ClassNotFoundException(String s, Throwable ex) { ! super(s, ex); // Disallow initCause } /** * Returns the exception that was raised if an error occurred while * attempting to load the class. Otherwise, returns {@code null}.
*** 106,125 **** * * @return the <code>Exception</code> that was raised while loading a class * @since 1.2 */ public Throwable getException() { ! return ex; } /** ! * Returns the cause of this exception (the exception that was raised ! * if an error occurred while attempting to load the class; otherwise ! * {@code null}). * ! * @return the cause of this exception. ! * @since 1.4 */ ! public Throwable getCause() { ! return ex; } } --- 101,144 ---- * * @return the <code>Exception</code> that was raised while loading a class * @since 1.2 */ public Throwable getException() { ! return super.getCause(); } /** ! * Serializable fields for ClassNotFoundException. * ! * @serialField ex Throwable */ ! private static final ObjectStreamField[] serialPersistentFields = { ! new ObjectStreamField("ex", Throwable.class) ! }; ! ! /* ! * Reconstitutes the ClassNotFoundException instance from a stream ! * and initialize the cause properly when deserializing from an older ! * version. ! * ! * The getException and getCause method returns the private "ex" field ! * in the older implementation and ClassNotFoundException::cause ! * was set to null. ! */ ! private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { ! ObjectInputStream.GetField fields = s.readFields(); ! Throwable exception = (Throwable) fields.get("ex", null); ! if (exception != null) { ! setCause(exception); ! } ! } ! ! /* ! * To maintain compatibility with older implementation, write a serial ! * "ex" field with the cause as the value. ! */ ! private void writeObject(ObjectOutputStream out) throws IOException { ! ObjectOutputStream.PutField fields = out.putFields(); ! fields.put("ex", super.getCause()); ! out.writeFields(); } }
< prev index next >