View Javadoc

1   // SAX exception class.
2   // http://www.saxproject.org
3   // No warranty; no copyright -- use this as you will.
4   // $Id: SAXException.java,v 1.5 2004/03/19 20:17:54 maartenc Exp $
5   
6   package org.xml.sax;
7   
8   /***
9    * Encapsulate a general SAX error or warning.
10   *
11   * <blockquote>
12   * <em>This module, both source code and documentation, is in the
13   * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
14   * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
15   * for further information.
16   * </blockquote>
17   *
18   * <p>This class can contain basic error or warning information from
19   * either the XML parser or the application: a parser writer or
20   * application writer can subclass it to provide additional
21   * functionality.  SAX handlers may throw this exception or
22   * any exception subclassed from it.</p>
23   *
24   * <p>If the application needs to pass through other types of
25   * exceptions, it must wrap those exceptions in a SAXException
26   * or an exception derived from a SAXException.</p>
27   *
28   * <p>If the parser or application needs to include information about a
29   * specific location in an XML document, it should use the
30   * {@link org.xml.sax.SAXParseException SAXParseException} subclass.</p>
31   *
32   * @since SAX 1.0
33   * @author David Megginson
34   * @version 2.0.1 (sax2r2)
35   * @see org.xml.sax.SAXParseException
36   */
37  public class SAXException extends Exception {
38  
39  
40      /***
41       * Create a new SAXException.
42       */
43      public SAXException ()
44      {
45  	super();
46  	this.exception = null;
47      }
48      
49      
50      /***
51       * Create a new SAXException.
52       *
53       * @param message The error or warning message.
54       */
55      public SAXException (String message) {
56  	super(message);
57  	this.exception = null;
58      }
59      
60      
61      /***
62       * Create a new SAXException wrapping an existing exception.
63       *
64       * <p>The existing exception will be embedded in the new
65       * one, and its message will become the default message for
66       * the SAXException.</p>
67       *
68       * @param e The exception to be wrapped in a SAXException.
69       */
70      public SAXException (Exception e)
71      {
72  	super();
73  	this.exception = e;
74      }
75      
76      
77      /***
78       * Create a new SAXException from an existing exception.
79       *
80       * <p>The existing exception will be embedded in the new
81       * one, but the new exception will have its own message.</p>
82       *
83       * @param message The detail message.
84       * @param e The exception to be wrapped in a SAXException.
85       */
86      public SAXException (String message, Exception e)
87      {
88  	super(message);
89  	this.exception = e;
90      }
91      
92      
93      /***
94       * Return a detail message for this exception.
95       *
96       * <p>If there is an embedded exception, and if the SAXException
97       * has no detail message of its own, this method will return
98       * the detail message from the embedded exception.</p>
99       *
100      * @return The error or warning message.
101      */
102     public String getMessage ()
103     {
104 	String message = super.getMessage();
105 	
106 	if (message == null && exception != null) {
107 	    return exception.getMessage();
108 	} else {
109 	    return message;
110 	}
111     }
112     
113     
114     /***
115      * Return the embedded exception, if any.
116      *
117      * @return The embedded exception, or null if there is none.
118      */
119     public Exception getException ()
120     {
121 	return exception;
122     }
123 
124 
125     /***
126      * Override toString to pick up any embedded exception.
127      *
128      * @return A string representation of this exception.
129      */
130     public String toString ()
131     {
132 	if (exception != null) {
133 	    return exception.toString();
134 	} else {
135 	    return super.toString();
136 	}
137     }
138     
139     
140     
141     //////////////////////////////////////////////////////////////////////
142     // Internal state.
143     //////////////////////////////////////////////////////////////////////
144 
145 
146     /***
147      * @serial The embedded exception if tunnelling, or null.
148      */    
149     private Exception exception;
150     
151 }
152 
153 // end of SAXException.java