/[classpath]/classpath/java/rmi/RemoteException.java
ViewVC logotype

Diff of /classpath/java/rmi/RemoteException.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by mark, Tue Jan 22 22:27:00 2002 UTC revision 1.3 by ericb, Sun Feb 24 04:25:16 2002 UTC
# Line 1  Line 1 
1  /*  /* RemoteException.java -- common superclass for exceptions in java.rmi
2    Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.     Copyright (c) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 7  GNU Classpath is free software; you can Line 7  GNU Classpath is free software; you can
7  it under the terms of the GNU General Public License as published by  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)  the Free Software Foundation; either version 2, or (at your option)
9  any later version.  any later version.
10    
11  GNU Classpath is distributed in the hope that it will be useful, but  GNU Classpath is distributed in the hope that it will be useful, but
12  WITHOUT ANY WARRANTY; without even the implied warranty of  WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Line 37  exception statement from your version. * Line 37  exception statement from your version. *
37    
38  package java.rmi;  package java.rmi;
39    
 import java.lang.Throwable;  
40  import java.io.IOException;  import java.io.IOException;
 import java.io.PrintStream;  
 import java.io.PrintWriter;  
   
   
 public class RemoteException  
         extends IOException {  
   
 public static final long serialVersionUID = -5148567311918794206l;  
   
 public Throwable detail;  
   
 public RemoteException() {  
         super();  
         detail = null;  
 }  
   
 public RemoteException(String s) {  
         super(s);  
         detail = null;  
 }  
   
 public RemoteException(String s, Throwable e) {  
         super(s);  
         detail = e;  
 }  
   
 public String getMessage() {  
         if (detail == null) {  
                 return (super.getMessage());  
         }  
         else {  
                 return (super.getMessage() + "; nested exception is: " + detail.getMessage());  
         }  
 }  
   
 public void printStackTrace(PrintStream s) {  
         if (detail != null) {  
                 detail.printStackTrace(s);  
         }  
         super.printStackTrace(s);  
 }  
   
 public void printStackTrace(PrintWriter s) {  
         if (detail != null) {  
                 detail.printStackTrace(s);  
         }  
         super.printStackTrace(s);  
 }  
   
 public void printStackTrace() {  
         printStackTrace(System.err);  
 }  
41    
42    /**
43     * The superclass of exceptions related to RMI (remote method invocation).
44     * Classes that implement <code>java.rmi.Remote</code> should list this
45     * exception in their throws clause.
46     *
47     * @author unknown
48     * @since 1.1
49     * @status updated to 1.4
50     */
51    public class RemoteException extends IOException
52    {
53      /**
54       * Compatible with JDK 1.2+.
55       */
56      private static final long serialVersionUID = -5148567311918794206l;
57    
58      /**
59       * The cause of this exception. This pre-dates the exception chaining
60       * of Throwable; and although you can change this field, you are wiser
61       * to leave it alone.
62       *
63       * @serial the exception cause
64       */
65      public Throwable detail;
66    
67      /**
68       * Create an exception with no message, and cause initialized to null.
69       */
70      public RemoteException()
71      {
72        this(null, null);
73      }
74    
75      /**
76       * Create an exception with the given message, and cause initialized to null.
77       *
78       * @param s the message
79       */
80      public RemoteException(String s)
81      {
82        this(s, null);
83      }
84    
85      /**
86       * Create an exception with the given message and cause.
87       *
88       * @param s the message
89       * @param ex the cause
90       */
91      public RemoteException(String s, Throwable e)
92      {
93        super(s);
94        initCause(e);
95        detail = e;
96      }
97    
98      /**
99       * This method returns a message indicating what went wrong, in this
100       * format:
101       * <code>super.getMessage() + (detail == null ? ""
102       *    : "; nested exception is:\n\t" + detail)<code>.
103       *
104       * @return the chained message
105       */
106      public String getMessage()
107      {
108        if (detail == this || detail == null)
109          return super.getMessage();
110        return super.getMessage() + "; nested exception is:\n\t" + detail;
111      }
112    
113      /**
114       * Returns the cause of this exception. Note that this may not be the
115       * original cause, thanks to the <code>detail</code> field being public
116       * and non-final (yuck). However, to avoid violating the contract of
117       * Throwable.getCause(), this returns null if <code>detail == this</code>,
118       * as no exception can be its own cause.
119       *
120       * @return the cause
121       * @since 1.4
122       */
123      public Throwable getCause()
124      {
125        return detail == this ? null : detail;
126      }
127  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26