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