Save This Page
Home » openjdk-7 » java » rmi » [javadoc | source]
    1   /*
    2    * Copyright 1996-2003 Sun Microsystems, Inc.  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.  Sun designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
   22    * CA 95054 USA or visit www.sun.com if you need additional information or
   23    * have any questions.
   24    */
   25   
   26   package java.rmi;
   27   
   28   /**
   29    * A <code>RemoteException</code> is the common superclass for a number of
   30    * communication-related exceptions that may occur during the execution of a
   31    * remote method call.  Each method of a remote interface, an interface that
   32    * extends <code>java.rmi.Remote</code>, must list
   33    * <code>RemoteException</code> in its throws clause.
   34    *
   35    * <p>As of release 1.4, this exception has been retrofitted to conform to
   36    * the general purpose exception-chaining mechanism.  The "wrapped remote
   37    * exception" that may be provided at construction time and accessed via
   38    * the public {@link #detail} field is now known as the <i>cause</i>, and
   39    * may be accessed via the {@link Throwable#getCause()} method, as well as
   40    * the aforementioned "legacy field."
   41    *
   42    * <p>Invoking the method {@link Throwable#initCause(Throwable)} on an
   43    * instance of <code>RemoteException</code> always throws {@link
   44    * IllegalStateException}.
   45    *
   46    * @author  Ann Wollrath
   47    * @since   JDK1.1
   48    */
   49   public class RemoteException extends java.io.IOException {
   50   
   51       /* indicate compatibility with JDK 1.1.x version of class */
   52       private static final long serialVersionUID = -5148567311918794206L;
   53   
   54       /**
   55        * The cause of the remote exception.
   56        *
   57        * <p>This field predates the general-purpose exception chaining facility.
   58        * The {@link Throwable#getCause()} method is now the preferred means of
   59        * obtaining this information.
   60        *
   61        * @serial
   62        */
   63       public Throwable detail;
   64   
   65       /**
   66        * Constructs a <code>RemoteException</code>.
   67        */
   68       public RemoteException() {
   69           initCause(null);  // Disallow subsequent initCause
   70       }
   71   
   72       /**
   73        * Constructs a <code>RemoteException</code> with the specified
   74        * detail message.
   75        *
   76        * @param s the detail message
   77        */
   78       public RemoteException(String s) {
   79           super(s);
   80           initCause(null);  // Disallow subsequent initCause
   81       }
   82   
   83       /**
   84        * Constructs a <code>RemoteException</code> with the specified detail
   85        * message and cause.  This constructor sets the {@link #detail}
   86        * field to the specified <code>Throwable</code>.
   87        *
   88        * @param s the detail message
   89        * @param cause the cause
   90        */
   91       public RemoteException(String s, Throwable cause) {
   92           super(s);
   93           initCause(null);  // Disallow subsequent initCause
   94           detail = cause;
   95       }
   96   
   97       /**
   98        * Returns the detail message, including the message from the cause, if
   99        * any, of this exception.
  100        *
  101        * @return the detail message
  102        */
  103       public String getMessage() {
  104           if (detail == null) {
  105               return super.getMessage();
  106           } else {
  107               return super.getMessage() + "; nested exception is: \n\t" +
  108                   detail.toString();
  109           }
  110       }
  111   
  112       /**
  113        * Returns the cause of this exception.  This method returns the value
  114        * of the {@link #detail} field.
  115        *
  116        * @return  the cause, which may be <tt>null</tt>.
  117        * @since   1.4
  118        */
  119       public Throwable getCause() {
  120           return detail;
  121       }
  122   }

Save This Page
Home » openjdk-7 » java » rmi » [javadoc | source]