Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 1 | \section{Built-in Exceptions} |
Fred Drake | 3bd9ab0 | 1998-07-23 19:33:08 +0000 | [diff] [blame] | 2 | |
Fred Drake | ffbe687 | 1999-04-22 21:23:22 +0000 | [diff] [blame] | 3 | \declaremodule{standard}{exceptions} |
Andrew M. Kuchling | 032bd0a | 2003-05-13 14:13:58 +0000 | [diff] [blame] | 4 | \modulesynopsis{Standard exception classes.} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 5 | |
Fred Drake | b91e934 | 1998-07-23 17:59:49 +0000 | [diff] [blame] | 6 | |
Neal Norwitz | 847207a | 2003-05-29 02:17:23 +0000 | [diff] [blame] | 7 | Exceptions should be class objects. |
Fred Drake | 7acb218 | 2000-09-09 03:28:00 +0000 | [diff] [blame] | 8 | The exceptions are defined in the module \module{exceptions}. This |
| 9 | module never needs to be imported explicitly: the exceptions are |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 10 | provided in the built-in namespace as well as the \module{exceptions} |
| 11 | module. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 12 | |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 13 | For class exceptions, in a \keyword{try}\stindex{try} statement with |
| 14 | an \keyword{except}\stindex{except} clause that mentions a particular |
| 15 | class, that clause also handles any exception classes derived from |
| 16 | that class (but not exception classes from which \emph{it} is |
| 17 | derived). Two exception classes that are not related via subclassing |
| 18 | are never equivalent, even if they have the same name. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 19 | |
| 20 | The built-in exceptions listed below can be generated by the |
| 21 | interpreter or built-in functions. Except where mentioned, they have |
| 22 | an ``associated value'' indicating the detailed cause of the error. |
| 23 | This may be a string or a tuple containing several items of |
| 24 | information (e.g., an error code and a string explaining the code). |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 25 | The associated value is the second argument to the |
| 26 | \keyword{raise}\stindex{raise} statement. For string exceptions, the |
| 27 | associated value itself will be stored in the variable named as the |
| 28 | second argument of the \keyword{except} clause (if any). For class |
| 29 | exceptions, that variable receives the exception instance. If the |
| 30 | exception class is derived from the standard root class |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 31 | \exception{BaseException}, the associated value is present as the |
| 32 | exception instance's \member{args} attribute. If there is a single argument |
| 33 | (as is preferred), it is bound to the \member{message} attribute. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 34 | |
| 35 | User code can raise built-in exceptions. This can be used to test an |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 36 | exception handler or to report an error condition ``just like'' the |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 37 | situation in which the interpreter raises the same exception; but |
| 38 | beware that there is nothing to prevent user code from raising an |
| 39 | inappropriate error. |
| 40 | |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 41 | The built-in exception classes can be sub-classed to define new |
| 42 | exceptions; programmers are encouraged to at least derive new |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 43 | exceptions from the \exception{Exception} class and not |
| 44 | \exception{BaseException}. More |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 45 | information on defining exceptions is available in the |
| 46 | \citetitle[../tut/tut.html]{Python Tutorial} under the heading |
| 47 | ``User-defined Exceptions.'' |
| 48 | |
Fred Drake | 1947991 | 1998-02-13 06:58:54 +0000 | [diff] [blame] | 49 | \setindexsubitem{(built-in exception base class)} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 50 | |
| 51 | The following exceptions are only used as base classes for other |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 52 | exceptions. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 53 | |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 54 | \begin{excdesc}{BaseException} |
| 55 | The base class for all built-in exceptions. It is not meant to be directly |
| 56 | inherited by user-defined classes (for that use \exception{Exception}). If |
| 57 | \function{str()} or \function{unicode()} is called on an instance of this |
| 58 | class, the representation of the argument(s) to the instance are returned or |
| 59 | the emptry string when there were no arguments. If only a single argument is |
| 60 | passed in, it is stored in the \member{message} attribute. If more than one |
| 61 | argument is passed in, \member{message} is set to the empty string. These |
| 62 | semantics are meant to reflect the fact that \member{message} is to store a |
| 63 | text message explaining why the exception had been raised. If more data needs |
| 64 | to be attached to the exception, attach it through arbitrary attributes on the |
| 65 | instance. All arguments are also stored in \member{args} as a tuple, but it will |
| 66 | eventually be deprecated and thus its use is discouraged. |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 67 | \versionadded{2.5} |
Brett Cannon | 3096c53 | 2006-03-02 03:52:06 +0000 | [diff] [blame] | 68 | \end{excdesc} |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 69 | |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 70 | \begin{excdesc}{Exception} |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 71 | All built-in, non-system-exiting exceptions are derived |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 72 | from this class. All user-defined exceptions should also be derived |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 73 | from this class. |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 74 | \versionchanged[Changed to inherit from \exception{BaseException}]{2.5} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 75 | \end{excdesc} |
| 76 | |
| 77 | \begin{excdesc}{StandardError} |
Barry Warsaw | f2b4554 | 1999-02-24 00:27:14 +0000 | [diff] [blame] | 78 | The base class for all built-in exceptions except |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 79 | \exception{StopIteration}, \exception{GeneratorExit}, |
| 80 | \exception{KeyboardInterrupt} and \exception{SystemExit}. |
| 81 | \exception{StandardError} itself is derived from \exception{Exception}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 82 | \end{excdesc} |
| 83 | |
| 84 | \begin{excdesc}{ArithmeticError} |
| 85 | The base class for those built-in exceptions that are raised for |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 86 | various arithmetic errors: \exception{OverflowError}, |
| 87 | \exception{ZeroDivisionError}, \exception{FloatingPointError}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 88 | \end{excdesc} |
| 89 | |
| 90 | \begin{excdesc}{LookupError} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 91 | The base class for the exceptions that are raised when a key or |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 92 | index used on a mapping or sequence is invalid: \exception{IndexError}, |
Fred Drake | 53143be | 2000-10-25 21:05:29 +0000 | [diff] [blame] | 93 | \exception{KeyError}. This can be raised directly by |
| 94 | \function{sys.setdefaultencoding()}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 95 | \end{excdesc} |
| 96 | |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 97 | \begin{excdesc}{EnvironmentError} |
| 98 | The base class for exceptions that |
| 99 | can occur outside the Python system: \exception{IOError}, |
| 100 | \exception{OSError}. When exceptions of this type are created with a |
| 101 | 2-tuple, the first item is available on the instance's \member{errno} |
| 102 | attribute (it is assumed to be an error number), and the second item |
| 103 | is available on the \member{strerror} attribute (it is usually the |
| 104 | associated error message). The tuple itself is also available on the |
| 105 | \member{args} attribute. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 106 | \versionadded{1.5.2} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 107 | |
| 108 | When an \exception{EnvironmentError} exception is instantiated with a |
| 109 | 3-tuple, the first two items are available as above, while the third |
| 110 | item is available on the \member{filename} attribute. However, for |
| 111 | backwards compatibility, the \member{args} attribute contains only a |
| 112 | 2-tuple of the first two constructor arguments. |
| 113 | |
| 114 | The \member{filename} attribute is \code{None} when this exception is |
| 115 | created with other than 3 arguments. The \member{errno} and |
| 116 | \member{strerror} attributes are also \code{None} when the instance was |
| 117 | created with other than 2 or 3 arguments. In this last case, |
| 118 | \member{args} contains the verbatim constructor arguments as a tuple. |
| 119 | \end{excdesc} |
| 120 | |
Fred Drake | 88c023b | 2000-09-07 16:33:32 +0000 | [diff] [blame] | 121 | |
Fred Drake | 1947991 | 1998-02-13 06:58:54 +0000 | [diff] [blame] | 122 | \setindexsubitem{(built-in exception)} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 123 | |
| 124 | The following exceptions are the exceptions that are actually raised. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 125 | |
| 126 | \begin{excdesc}{AssertionError} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 127 | \stindex{assert} |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 128 | Raised when an \keyword{assert} statement fails. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 129 | \end{excdesc} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 130 | |
| 131 | \begin{excdesc}{AttributeError} |
| 132 | % xref to attribute reference? |
| 133 | Raised when an attribute reference or assignment fails. (When an |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 134 | object does not support attribute references or attribute assignments |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 135 | at all, \exception{TypeError} is raised.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 136 | \end{excdesc} |
| 137 | |
| 138 | \begin{excdesc}{EOFError} |
| 139 | % XXXJH xrefs here |
Neal Norwitz | ce96f69 | 2006-03-17 06:49:51 +0000 | [diff] [blame] | 140 | Raised when attempting to read beyond the end of a file. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 141 | % XXXJH xrefs here |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 142 | (N.B.: the \method{read()} and \method{readline()} methods of file |
Fred Drake | c37b65e | 2001-11-28 07:26:15 +0000 | [diff] [blame] | 143 | objects return an empty string when they hit \EOF.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 144 | \end{excdesc} |
| 145 | |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 146 | \begin{excdesc}{FloatingPointError} |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 147 | Raised when a floating point operation fails. This exception is |
| 148 | always defined, but can only be raised when Python is configured |
Fred Drake | ee775a1 | 2000-04-11 19:46:40 +0000 | [diff] [blame] | 149 | with the \longprogramopt{with-fpectl} option, or the |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 150 | \constant{WANT_SIGFPE_HANDLER} symbol is defined in the |
Martin v. Löwis | 4f1cd8b | 2001-07-26 13:41:06 +0000 | [diff] [blame] | 151 | \file{pyconfig.h} file. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 152 | \end{excdesc} |
| 153 | |
Brett Cannon | 3096c53 | 2006-03-02 03:52:06 +0000 | [diff] [blame] | 154 | \begin{excdesc}{GeneratorExit} |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 155 | Raise when a generator's \method{close()} method is called. |
| 156 | It directly inherits from \exception{Exception} instead of |
| 157 | \exception{StandardError} since it is technically not an error. |
| 158 | \versionadded{2.5} |
Brett Cannon | 3096c53 | 2006-03-02 03:52:06 +0000 | [diff] [blame] | 159 | \end{excdesc} |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 160 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 161 | \begin{excdesc}{IOError} |
| 162 | % XXXJH xrefs here |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 163 | Raised when an I/O operation (such as a \keyword{print} statement, |
| 164 | the built-in \function{open()} function or a method of a file |
| 165 | object) fails for an I/O-related reason, e.g., ``file not found'' or |
| 166 | ``disk full''. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 167 | |
Fred Drake | 02e18b4 | 1999-01-05 21:42:18 +0000 | [diff] [blame] | 168 | This class is derived from \exception{EnvironmentError}. See the |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 169 | discussion above for more information on exception instance |
| 170 | attributes. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 171 | \end{excdesc} |
| 172 | |
| 173 | \begin{excdesc}{ImportError} |
| 174 | % XXXJH xref to import statement? |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 175 | Raised when an \keyword{import} statement fails to find the module |
Fred Drake | f65e323 | 1998-11-25 20:55:03 +0000 | [diff] [blame] | 176 | definition or when a \code{from \textrm{\ldots} import} fails to find a |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 177 | name that is to be imported. |
| 178 | \end{excdesc} |
| 179 | |
| 180 | \begin{excdesc}{IndexError} |
| 181 | % XXXJH xref to sequences |
| 182 | Raised when a sequence subscript is out of range. (Slice indices are |
| 183 | silently truncated to fall in the allowed range; if an index is not a |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 184 | plain integer, \exception{TypeError} is raised.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 185 | \end{excdesc} |
| 186 | |
| 187 | \begin{excdesc}{KeyError} |
| 188 | % XXXJH xref to mapping objects? |
| 189 | Raised when a mapping (dictionary) key is not found in the set of |
| 190 | existing keys. |
| 191 | \end{excdesc} |
| 192 | |
| 193 | \begin{excdesc}{KeyboardInterrupt} |
| 194 | Raised when the user hits the interrupt key (normally |
Fred Drake | 682d5f3 | 2001-07-12 02:09:51 +0000 | [diff] [blame] | 195 | \kbd{Control-C} or \kbd{Delete}). During execution, a check for |
Fred Drake | 2a1cc3e | 1998-04-28 13:38:54 +0000 | [diff] [blame] | 196 | interrupts is made regularly. |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 197 | % XXX(hylton) xrefs here |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 198 | The exception inherits from \exception{BaseException} so as to not be |
| 199 | accidentally caught by code that catches \exception{Exception} and thus |
| 200 | prevent the interpreter from exiting. |
| 201 | \versionchanged[Changed to inherit from \exception{BaseException}]{2.5} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 202 | \end{excdesc} |
| 203 | |
| 204 | \begin{excdesc}{MemoryError} |
| 205 | Raised when an operation runs out of memory but the situation may |
| 206 | still be rescued (by deleting some objects). The associated value is |
| 207 | a string indicating what kind of (internal) operation ran out of memory. |
| 208 | Note that because of the underlying memory management architecture |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 209 | (C's \cfunction{malloc()} function), the interpreter may not |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 210 | always be able to completely recover from this situation; it |
| 211 | nevertheless raises an exception so that a stack traceback can be |
| 212 | printed, in case a run-away program was the cause. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 213 | \end{excdesc} |
| 214 | |
| 215 | \begin{excdesc}{NameError} |
| 216 | Raised when a local or global name is not found. This applies only |
Raymond Hettinger | 9240be2 | 2002-08-27 23:53:23 +0000 | [diff] [blame] | 217 | to unqualified names. The associated value is an error message that |
| 218 | includes the name that could not be found. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 219 | \end{excdesc} |
| 220 | |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 221 | \begin{excdesc}{NotImplementedError} |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 222 | This exception is derived from \exception{RuntimeError}. In user |
| 223 | defined base classes, abstract methods should raise this exception |
| 224 | when they require derived classes to override the method. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 225 | \versionadded{1.5.2} |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 226 | \end{excdesc} |
| 227 | |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 228 | \begin{excdesc}{OSError} |
| 229 | %xref for os module |
Fred Drake | c457ca7 | 1998-07-23 20:31:53 +0000 | [diff] [blame] | 230 | This class is derived from \exception{EnvironmentError} and is used |
Fred Drake | ffbe687 | 1999-04-22 21:23:22 +0000 | [diff] [blame] | 231 | primarily as the \refmodule{os} module's \code{os.error} exception. |
Fred Drake | 98be47e | 1999-02-01 16:17:40 +0000 | [diff] [blame] | 232 | See \exception{EnvironmentError} above for a description of the |
| 233 | possible associated values. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 234 | \versionadded{1.5.2} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 235 | \end{excdesc} |
| 236 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 237 | \begin{excdesc}{OverflowError} |
| 238 | % XXXJH reference to long's and/or int's? |
| 239 | Raised when the result of an arithmetic operation is too large to be |
| 240 | represented. This cannot occur for long integers (which would rather |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 241 | raise \exception{MemoryError} than give up). Because of the lack of |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 242 | standardization of floating point exception handling in C, most |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 243 | floating point operations also aren't checked. For plain integers, |
| 244 | all operations that can overflow are checked except left shift, where |
| 245 | typical applications prefer to drop bits than raise an exception. |
| 246 | \end{excdesc} |
| 247 | |
Fred Drake | 8c2c3d3 | 2001-10-06 06:10:54 +0000 | [diff] [blame] | 248 | \begin{excdesc}{ReferenceError} |
| 249 | This exception is raised when a weak reference proxy, created by the |
| 250 | \function{\refmodule{weakref}.proxy()} function, is used to access |
| 251 | an attribute of the referent after it has been garbage collected. |
| 252 | For more information on weak references, see the \refmodule{weakref} |
| 253 | module. |
| 254 | \versionadded[Previously known as the |
| 255 | \exception{\refmodule{weakref}.ReferenceError} |
| 256 | exception]{2.2} |
| 257 | \end{excdesc} |
| 258 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 259 | \begin{excdesc}{RuntimeError} |
| 260 | Raised when an error is detected that doesn't fall in any of the |
| 261 | other categories. The associated value is a string indicating what |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 262 | precisely went wrong. (This exception is mostly a relic from a |
| 263 | previous version of the interpreter; it is not used very much any |
| 264 | more.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 265 | \end{excdesc} |
| 266 | |
Fred Drake | 9cfe182 | 2001-05-03 04:30:45 +0000 | [diff] [blame] | 267 | \begin{excdesc}{StopIteration} |
Georg Brandl | a18af4e | 2007-04-21 15:47:16 +0000 | [diff] [blame] | 268 | Raised by builtin \function{next()} and an iterator's \method{__next__()} |
| 269 | method to signal that there are no further values. |
Fred Drake | 9cfe182 | 2001-05-03 04:30:45 +0000 | [diff] [blame] | 270 | This is derived from \exception{Exception} rather than |
| 271 | \exception{StandardError}, since this is not considered an error in |
| 272 | its normal application. |
Fred Drake | f42cc45 | 2001-05-03 04:39:10 +0000 | [diff] [blame] | 273 | \versionadded{2.2} |
Fred Drake | 9cfe182 | 2001-05-03 04:30:45 +0000 | [diff] [blame] | 274 | \end{excdesc} |
| 275 | |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 276 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 277 | \begin{excdesc}{SyntaxError} |
| 278 | % XXXJH xref to these functions? |
| 279 | Raised when the parser encounters a syntax error. This may occur in |
Georg Brandl | 7cae87c | 2006-09-06 06:51:57 +0000 | [diff] [blame] | 280 | an \keyword{import} statement, in a call to the built-in functions |
| 281 | \function{exec()}, \function{execfile()}, \function{eval()} or |
| 282 | \function{input()}, or when reading the initial script or standard |
| 283 | input (also interactively). |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 284 | |
Raymond Hettinger | 6880431 | 2005-01-01 00:28:46 +0000 | [diff] [blame] | 285 | Instances of this class have attributes \member{filename}, |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 286 | \member{lineno}, \member{offset} and \member{text} for easier access |
| 287 | to the details. \function{str()} of the exception instance returns |
| 288 | only the message. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 289 | \end{excdesc} |
| 290 | |
| 291 | \begin{excdesc}{SystemError} |
| 292 | Raised when the interpreter finds an internal error, but the |
| 293 | situation does not look so serious to cause it to abandon all hope. |
| 294 | The associated value is a string indicating what went wrong (in |
| 295 | low-level terms). |
| 296 | |
| 297 | You should report this to the author or maintainer of your Python |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 298 | interpreter. Be sure to report the version of the Python |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 299 | interpreter (\code{sys.version}; it is also printed at the start of an |
| 300 | interactive Python session), the exact error message (the exception's |
| 301 | associated value) and if possible the source of the program that |
| 302 | triggered the error. |
| 303 | \end{excdesc} |
| 304 | |
| 305 | \begin{excdesc}{SystemExit} |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 306 | % XXX(hylton) xref to module sys? |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 307 | This exception is raised by the \function{sys.exit()} function. When it |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 308 | is not handled, the Python interpreter exits; no stack traceback is |
| 309 | printed. If the associated value is a plain integer, it specifies the |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 310 | system exit status (passed to C's \cfunction{exit()} function); if it is |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 311 | \code{None}, the exit status is zero; if it has another type (such as |
| 312 | a string), the object's value is printed and the exit status is one. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 313 | |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 314 | Instances have an attribute \member{code} which is set to the |
| 315 | proposed exit status or error message (defaulting to \code{None}). |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 316 | Also, this exception derives directly from \exception{BaseException} and |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 317 | not \exception{StandardError}, since it is not technically an error. |
| 318 | |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 319 | A call to \function{sys.exit()} is translated into an exception so that |
| 320 | clean-up handlers (\keyword{finally} clauses of \keyword{try} statements) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 321 | can be executed, and so that a debugger can execute a script without |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 322 | running the risk of losing control. The \function{os._exit()} function |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 323 | can be used if it is absolutely positively necessary to exit |
Fred Drake | c046e97 | 2001-07-23 19:19:39 +0000 | [diff] [blame] | 324 | immediately (for example, in the child process after a call to |
| 325 | \function{fork()}). |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 326 | |
| 327 | The exception inherits from \exception{BaseException} instead of |
| 328 | \exception{StandardError} or \exception{Exception} so that it is not |
| 329 | accidentally caught by code that catches \exception{Exception}. This allows |
| 330 | the exception to properly propagate up and cause the interpreter to exit. |
| 331 | \versionchanged[Changed to inherit from \exception{BaseException}]{2.5} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 332 | \end{excdesc} |
| 333 | |
| 334 | \begin{excdesc}{TypeError} |
Raymond Hettinger | 4ee2ff3 | 2003-08-04 08:33:50 +0000 | [diff] [blame] | 335 | Raised when an operation or function is applied to an object |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 336 | of inappropriate type. The associated value is a string giving |
| 337 | details about the type mismatch. |
| 338 | \end{excdesc} |
| 339 | |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 340 | \begin{excdesc}{UnboundLocalError} |
| 341 | Raised when a reference is made to a local variable in a function or |
| 342 | method, but no value has been bound to that variable. This is a |
| 343 | subclass of \exception{NameError}. |
Fred Drake | 30f76ff | 2000-06-30 16:06:19 +0000 | [diff] [blame] | 344 | \versionadded{2.0} |
Fred Drake | 5828ad6 | 2000-04-06 15:03:01 +0000 | [diff] [blame] | 345 | \end{excdesc} |
| 346 | |
Fred Drake | 3cb793e | 2000-04-06 14:48:35 +0000 | [diff] [blame] | 347 | \begin{excdesc}{UnicodeError} |
| 348 | Raised when a Unicode-related encoding or decoding error occurs. It |
| 349 | is a subclass of \exception{ValueError}. |
Fred Drake | 30f76ff | 2000-06-30 16:06:19 +0000 | [diff] [blame] | 350 | \versionadded{2.0} |
Fred Drake | 3cb793e | 2000-04-06 14:48:35 +0000 | [diff] [blame] | 351 | \end{excdesc} |
| 352 | |
Walter Dörwald | 3aeb632 | 2002-09-02 13:14:32 +0000 | [diff] [blame] | 353 | \begin{excdesc}{UnicodeEncodeError} |
| 354 | Raised when a Unicode-related error occurs during encoding. It |
| 355 | is a subclass of \exception{UnicodeError}. |
| 356 | \versionadded{2.3} |
| 357 | \end{excdesc} |
| 358 | |
| 359 | \begin{excdesc}{UnicodeDecodeError} |
| 360 | Raised when a Unicode-related error occurs during decoding. It |
| 361 | is a subclass of \exception{UnicodeError}. |
| 362 | \versionadded{2.3} |
| 363 | \end{excdesc} |
| 364 | |
| 365 | \begin{excdesc}{UnicodeTranslateError} |
| 366 | Raised when a Unicode-related error occurs during translating. It |
| 367 | is a subclass of \exception{UnicodeError}. |
| 368 | \versionadded{2.3} |
| 369 | \end{excdesc} |
| 370 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 371 | \begin{excdesc}{ValueError} |
| 372 | Raised when a built-in operation or function receives an argument |
| 373 | that has the right type but an inappropriate value, and the |
| 374 | situation is not described by a more precise exception such as |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 375 | \exception{IndexError}. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 376 | \end{excdesc} |
| 377 | |
Fred Drake | cebda6f | 2000-04-17 17:42:00 +0000 | [diff] [blame] | 378 | \begin{excdesc}{WindowsError} |
| 379 | Raised when a Windows-specific error occurs or when the error number |
| 380 | does not correspond to an \cdata{errno} value. The |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 381 | \member{winerror} and \member{strerror} values are created from the |
Fred Drake | cebda6f | 2000-04-17 17:42:00 +0000 | [diff] [blame] | 382 | return values of the \cfunction{GetLastError()} and |
| 383 | \cfunction{FormatMessage()} functions from the Windows Platform API. |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 384 | The \member{errno} value maps the \member{winerror} value to |
| 385 | corresponding \code{errno.h} values. |
Fred Drake | cebda6f | 2000-04-17 17:42:00 +0000 | [diff] [blame] | 386 | This is a subclass of \exception{OSError}. |
Fred Drake | 30f76ff | 2000-06-30 16:06:19 +0000 | [diff] [blame] | 387 | \versionadded{2.0} |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 388 | \versionchanged[Previous versions put the \cfunction{GetLastError()} |
| 389 | codes into \member{errno}]{2.5} |
Fred Drake | cebda6f | 2000-04-17 17:42:00 +0000 | [diff] [blame] | 390 | \end{excdesc} |
| 391 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 392 | \begin{excdesc}{ZeroDivisionError} |
| 393 | Raised when the second argument of a division or modulo operation is |
| 394 | zero. The associated value is a string indicating the type of the |
| 395 | operands and the operation. |
| 396 | \end{excdesc} |
Guido van Rossum | 1367b83 | 2000-12-19 04:27:54 +0000 | [diff] [blame] | 397 | |
| 398 | |
Fred Drake | c692055 | 2001-09-21 21:12:30 +0000 | [diff] [blame] | 399 | \setindexsubitem{(built-in warning)} |
Guido van Rossum | 1367b83 | 2000-12-19 04:27:54 +0000 | [diff] [blame] | 400 | |
| 401 | The following exceptions are used as warning categories; see the |
Barry Warsaw | b8c20a7 | 2002-08-14 16:40:54 +0000 | [diff] [blame] | 402 | \refmodule{warnings} module for more information. |
Guido van Rossum | 1367b83 | 2000-12-19 04:27:54 +0000 | [diff] [blame] | 403 | |
| 404 | \begin{excdesc}{Warning} |
| 405 | Base class for warning categories. |
| 406 | \end{excdesc} |
| 407 | |
| 408 | \begin{excdesc}{UserWarning} |
| 409 | Base class for warnings generated by user code. |
| 410 | \end{excdesc} |
| 411 | |
| 412 | \begin{excdesc}{DeprecationWarning} |
| 413 | Base class for warnings about deprecated features. |
| 414 | \end{excdesc} |
| 415 | |
Neal Norwitz | d68f517 | 2002-05-29 15:54:55 +0000 | [diff] [blame] | 416 | \begin{excdesc}{PendingDeprecationWarning} |
| 417 | Base class for warnings about features which will be deprecated in the future. |
| 418 | \end{excdesc} |
| 419 | |
Guido van Rossum | 1367b83 | 2000-12-19 04:27:54 +0000 | [diff] [blame] | 420 | \begin{excdesc}{SyntaxWarning} |
| 421 | Base class for warnings about dubious syntax |
| 422 | \end{excdesc} |
| 423 | |
| 424 | \begin{excdesc}{RuntimeWarning} |
| 425 | Base class for warnings about dubious runtime behavior. |
| 426 | \end{excdesc} |
Skip Montanaro | bb6bbc4 | 2002-03-28 20:53:22 +0000 | [diff] [blame] | 427 | |
Barry Warsaw | b8c20a7 | 2002-08-14 16:40:54 +0000 | [diff] [blame] | 428 | \begin{excdesc}{FutureWarning} |
| 429 | Base class for warnings about constructs that will change semantically |
| 430 | in the future. |
| 431 | \end{excdesc} |
| 432 | |
Thomas Wouters | 477c8d5 | 2006-05-27 19:21:47 +0000 | [diff] [blame] | 433 | \begin{excdesc}{ImportWarning} |
| 434 | Base class for warnings about probable mistakes in module imports. |
| 435 | \versionadded{2.5} |
| 436 | \end{excdesc} |
| 437 | |
Thomas Wouters | 00ee7ba | 2006-08-21 19:07:27 +0000 | [diff] [blame] | 438 | \begin{excdesc}{UnicodeWarning} |
| 439 | Base class for warnings related to Unicode. |
| 440 | \versionadded{2.5} |
| 441 | \end{excdesc} |
| 442 | |
Fred Drake | 8d62e94 | 2002-03-28 21:06:17 +0000 | [diff] [blame] | 443 | The class hierarchy for built-in exceptions is: |
Skip Montanaro | bb6bbc4 | 2002-03-28 20:53:22 +0000 | [diff] [blame] | 444 | |
Brett Cannon | 54ac294 | 2006-03-01 22:10:49 +0000 | [diff] [blame] | 445 | \verbatiminput{../../Lib/test/exception_hierarchy.txt} |