Frames | No Frames |
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.1 2004/12/23 22:38:42 mark 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