001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 //
019 // This source code implements specifications defined by the Java
020 // Community Process. In order to remain compliant with the specification
021 // DO NOT add / change / or delete method signatures!
022 //
023
024 package javax.servlet;
025
026 /**
027 * Defines a general exception a servlet can throw when it
028 * encounters difficulty.
029 *
030 * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $
031 */
032 public class ServletException extends Exception {
033 private Throwable rootCause;
034
035 /**
036 * Constructs a new servlet exception.
037 */
038 public ServletException() {
039 super();
040 }
041
042
043 /**
044 * Constructs a new servlet exception with the
045 * specified message. The message can be written
046 * to the server log and/or displayed for the user.
047 *
048 * @param message a <code>String</code> specifying the text of
049 * the exception message
050 */
051 public ServletException(String message) {
052 super(message);
053 }
054
055 /**
056 * Constructs a new servlet exception when the servlet
057 * needs to throw an exception and include a message
058 * about the "root cause" exception that interfered with its
059 * normal operation, including a description message.
060 *
061 * @param message a <code>String</code> containing
062 * the text of the exception message
063 *
064 * @param rootCause the <code>Throwable</code> exception
065 * that interfered with the servlet's normal operation, making this servlet
066 * exception necessary
067 */
068 public ServletException(String message, Throwable rootCause) {
069 super(message);
070 this.rootCause = rootCause;
071 }
072
073 /**
074 * Constructs a new servlet exception when the servlet
075 * needs to throw an exception and include a message
076 * about the "root cause" exception that interfered with its
077 * normal operation. The exception's message is based on the localized
078 * message of the underlying exception.
079 *
080 * <p>This method calls the <code>getLocalizedMessage</code> method
081 * on the <code>Throwable</code> exception to get a localized exception
082 * message. When subclassing <code>ServletException</code>,
083 * this method can be overridden to create an exception message
084 * designed for a specific locale.
085 *
086 * @param rootCause the <code>Throwable</code> exception
087 * that interfered with the servlet's normal operation, making the
088 * servlet exception necessary
089 */
090 public ServletException(Throwable rootCause) {
091 super(rootCause.getLocalizedMessage());
092 this.rootCause = rootCause;
093 }
094
095 /**
096 * Returns the exception that caused this servlet exception.
097 *
098 * @return the <code>Throwable</code> that caused this servlet exception
099 */
100 public Throwable getRootCause() {
101 return rootCause;
102 }
103 }
104
105
106
107
108