View Javadoc
1   /*
2    * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package java.io;
27  
28  /**
29   * Thrown when the Serialization runtime detects one of the following
30   * problems with a Class.
31   * <UL>
32   * <LI> The serial version of the class does not match that of the class
33   *      descriptor read from the stream
34   * <LI> The class contains unknown datatypes
35   * <LI> The class does not have an accessible no-arg constructor
36   * </UL>
37   *
38   * @author  unascribed
39   * @since   JDK1.1
40   */
41  public class InvalidClassException extends ObjectStreamException {
42  
43      private static final long serialVersionUID = -4333316296251054416L;
44  
45      /**
46       * Name of the invalid class.
47       *
48       * @serial Name of the invalid class.
49       */
50      public String classname;
51  
52      /**
53       * Report an InvalidClassException for the reason specified.
54       *
55       * @param reason  String describing the reason for the exception.
56       */
57      public InvalidClassException(String reason) {
58          super(reason);
59      }
60  
61      /**
62       * Constructs an InvalidClassException object.
63       *
64       * @param cname   a String naming the invalid class.
65       * @param reason  a String describing the reason for the exception.
66       */
67      public InvalidClassException(String cname, String reason) {
68          super(reason);
69          classname = cname;
70      }
71  
72      /**
73       * Produce the message and include the classname, if present.
74       */
75      public String getMessage() {
76          if (classname == null)
77              return super.getMessage();
78          else
79              return classname + "; " + super.getMessage();
80      }
81  }