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} |
Fred Drake | 3bd9ab0 | 1998-07-23 19:33:08 +0000 | [diff] [blame] | 4 | \modulesynopsis{Standard exceptions 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 | |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 7 | Exceptions can be class objects or string objects. While |
| 8 | traditionally, most exceptions have been string objects, in Python |
Guido van Rossum | eb0f066 | 1997-12-30 20:38:16 +0000 | [diff] [blame] | 9 | 1.5, all standard exceptions have been converted to class objects, |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 10 | and users are encouraged to do the same. The source code for those |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 11 | exceptions is present in the standard library module |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 12 | \module{exceptions}; this module never needs to be imported explicitly. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 13 | |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 14 | Two distinct string objects with the same value are considered different |
| 15 | exceptions. This is done to force programmers to use exception names |
| 16 | rather than their string value when specifying exception handlers. |
| 17 | The string value of all built-in exceptions is their name, but this is |
| 18 | not a requirement for user-defined exceptions or exceptions defined by |
| 19 | library modules. |
| 20 | |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 21 | For class exceptions, in a \keyword{try}\stindex{try} statement with |
| 22 | an \keyword{except}\stindex{except} clause that mentions a particular |
| 23 | class, that clause also handles any exception classes derived from |
| 24 | that class (but not exception classes from which \emph{it} is |
| 25 | derived). Two exception classes that are not related via subclassing |
| 26 | are never equivalent, even if they have the same name. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 27 | |
| 28 | The built-in exceptions listed below can be generated by the |
| 29 | interpreter or built-in functions. Except where mentioned, they have |
| 30 | an ``associated value'' indicating the detailed cause of the error. |
| 31 | This may be a string or a tuple containing several items of |
| 32 | information (e.g., an error code and a string explaining the code). |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 33 | The associated value is the second argument to the |
| 34 | \keyword{raise}\stindex{raise} statement. For string exceptions, the |
| 35 | associated value itself will be stored in the variable named as the |
| 36 | second argument of the \keyword{except} clause (if any). For class |
| 37 | exceptions, that variable receives the exception instance. If the |
| 38 | exception class is derived from the standard root class |
| 39 | \exception{Exception}, the associated value is present as the |
| 40 | exception instance's \member{args} attribute, and possibly on other |
| 41 | attributes as well. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 42 | |
| 43 | 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] | 44 | exception handler or to report an error condition ``just like'' the |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 45 | situation in which the interpreter raises the same exception; but |
| 46 | beware that there is nothing to prevent user code from raising an |
| 47 | inappropriate error. |
| 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 |
| 52 | exceptions. When string-based standard exceptions are used, they |
| 53 | are tuples containing the directly derived classes. |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 54 | \strong{Note:} These will always be classes in Python 1.6. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 55 | |
| 56 | \begin{excdesc}{Exception} |
| 57 | The root class for exceptions. All built-in exceptions are derived |
| 58 | from this class. All user-defined exceptions should also be derived |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 59 | from this class, but this is not (yet) enforced. The \function{str()} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 60 | function, when applied to an instance of this class (or most derived |
| 61 | classes) returns the string value of the argument or arguments, or an |
Guido van Rossum | 6cd7ecb | 1997-10-07 14:41:04 +0000 | [diff] [blame] | 62 | empty string if no arguments were given to the constructor. When used |
| 63 | as a sequence, this accesses the arguments given to the constructor |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 64 | (handy for backward compatibility with old code). The arguments are |
Fred Drake | c457ca7 | 1998-07-23 20:31:53 +0000 | [diff] [blame] | 65 | also available on the instance's \member{args} attribute, as a tuple. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 66 | \end{excdesc} |
| 67 | |
| 68 | \begin{excdesc}{StandardError} |
Barry Warsaw | f2b4554 | 1999-02-24 00:27:14 +0000 | [diff] [blame] | 69 | The base class for all built-in exceptions except |
| 70 | \exception{SystemExit}. \exception{StandardError} itself is derived |
| 71 | from the root class |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 72 | \exception{Exception}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 73 | \end{excdesc} |
| 74 | |
| 75 | \begin{excdesc}{ArithmeticError} |
| 76 | The base class for those built-in exceptions that are raised for |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 77 | various arithmetic errors: \exception{OverflowError}, |
| 78 | \exception{ZeroDivisionError}, \exception{FloatingPointError}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 79 | \end{excdesc} |
| 80 | |
| 81 | \begin{excdesc}{LookupError} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 82 | 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] | 83 | index used on a mapping or sequence is invalid: \exception{IndexError}, |
| 84 | \exception{KeyError}. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 85 | \end{excdesc} |
| 86 | |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 87 | \begin{excdesc}{EnvironmentError} |
| 88 | The base class for exceptions that |
| 89 | can occur outside the Python system: \exception{IOError}, |
| 90 | \exception{OSError}. When exceptions of this type are created with a |
| 91 | 2-tuple, the first item is available on the instance's \member{errno} |
| 92 | attribute (it is assumed to be an error number), and the second item |
| 93 | is available on the \member{strerror} attribute (it is usually the |
| 94 | associated error message). The tuple itself is also available on the |
| 95 | \member{args} attribute. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 96 | \versionadded{1.5.2} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 97 | |
| 98 | When an \exception{EnvironmentError} exception is instantiated with a |
| 99 | 3-tuple, the first two items are available as above, while the third |
| 100 | item is available on the \member{filename} attribute. However, for |
| 101 | backwards compatibility, the \member{args} attribute contains only a |
| 102 | 2-tuple of the first two constructor arguments. |
| 103 | |
| 104 | The \member{filename} attribute is \code{None} when this exception is |
| 105 | created with other than 3 arguments. The \member{errno} and |
| 106 | \member{strerror} attributes are also \code{None} when the instance was |
| 107 | created with other than 2 or 3 arguments. In this last case, |
| 108 | \member{args} contains the verbatim constructor arguments as a tuple. |
| 109 | \end{excdesc} |
| 110 | |
Fred Drake | 1947991 | 1998-02-13 06:58:54 +0000 | [diff] [blame] | 111 | \setindexsubitem{(built-in exception)} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 112 | |
| 113 | The following exceptions are the exceptions that are actually raised. |
Fred Drake | 37f1574 | 1999-11-10 16:21:37 +0000 | [diff] [blame] | 114 | They are class objects, except when the \programopt{-X} option is used |
| 115 | to revert back to string-based standard exceptions. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 116 | |
| 117 | \begin{excdesc}{AssertionError} |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 118 | \stindex{assert} |
Fred Drake | 38e5d27 | 2000-04-03 20:13:55 +0000 | [diff] [blame] | 119 | Raised when an \keyword{assert} statement fails. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 120 | \end{excdesc} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 121 | |
| 122 | \begin{excdesc}{AttributeError} |
| 123 | % xref to attribute reference? |
| 124 | Raised when an attribute reference or assignment fails. (When an |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 125 | object does not support attribute references or attribute assignments |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 126 | at all, \exception{TypeError} is raised.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 127 | \end{excdesc} |
| 128 | |
| 129 | \begin{excdesc}{EOFError} |
| 130 | % XXXJH xrefs here |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 131 | Raised when one of the built-in functions (\function{input()} or |
| 132 | \function{raw_input()}) hits an end-of-file condition (\EOF{}) without |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 133 | reading any data. |
| 134 | % XXXJH xrefs here |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 135 | (N.B.: the \method{read()} and \method{readline()} methods of file |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 136 | objects return an empty string when they hit \EOF{}.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 137 | \end{excdesc} |
| 138 | |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 139 | \begin{excdesc}{FloatingPointError} |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 140 | Raised when a floating point operation fails. This exception is |
| 141 | always defined, but can only be raised when Python is configured |
Fred Drake | 37f1574 | 1999-11-10 16:21:37 +0000 | [diff] [blame] | 142 | with the \programopt{-}\programopt{-with-fpectl} option, or the |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 143 | \constant{WANT_SIGFPE_HANDLER} symbol is defined in the |
| 144 | \file{config.h} file. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 145 | \end{excdesc} |
| 146 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 147 | \begin{excdesc}{IOError} |
| 148 | % XXXJH xrefs here |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 149 | Raised when an I/O operation (such as a \keyword{print} statement, |
| 150 | the built-in \function{open()} function or a method of a file |
| 151 | object) fails for an I/O-related reason, e.g., ``file not found'' or |
| 152 | ``disk full''. |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 153 | |
Fred Drake | 02e18b4 | 1999-01-05 21:42:18 +0000 | [diff] [blame] | 154 | This class is derived from \exception{EnvironmentError}. See the |
Fred Drake | b44e753 | 1998-07-27 21:11:42 +0000 | [diff] [blame] | 155 | discussion above for more information on exception instance |
| 156 | attributes. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 157 | \end{excdesc} |
| 158 | |
| 159 | \begin{excdesc}{ImportError} |
| 160 | % XXXJH xref to import statement? |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 161 | Raised when an \keyword{import} statement fails to find the module |
Fred Drake | f65e323 | 1998-11-25 20:55:03 +0000 | [diff] [blame] | 162 | 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] | 163 | name that is to be imported. |
| 164 | \end{excdesc} |
| 165 | |
| 166 | \begin{excdesc}{IndexError} |
| 167 | % XXXJH xref to sequences |
| 168 | Raised when a sequence subscript is out of range. (Slice indices are |
| 169 | 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] | 170 | plain integer, \exception{TypeError} is raised.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 171 | \end{excdesc} |
| 172 | |
| 173 | \begin{excdesc}{KeyError} |
| 174 | % XXXJH xref to mapping objects? |
| 175 | Raised when a mapping (dictionary) key is not found in the set of |
| 176 | existing keys. |
| 177 | \end{excdesc} |
| 178 | |
| 179 | \begin{excdesc}{KeyboardInterrupt} |
| 180 | Raised when the user hits the interrupt key (normally |
Fred Drake | 2a1cc3e | 1998-04-28 13:38:54 +0000 | [diff] [blame] | 181 | \kbd{Control-C} or \kbd{DEL}). During execution, a check for |
| 182 | interrupts is made regularly. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 183 | % XXXJH xrefs here |
Fred Drake | 2a1cc3e | 1998-04-28 13:38:54 +0000 | [diff] [blame] | 184 | Interrupts typed when a built-in function \function{input()} or |
| 185 | \function{raw_input()}) is waiting for input also raise this |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 186 | exception. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 187 | \end{excdesc} |
| 188 | |
| 189 | \begin{excdesc}{MemoryError} |
| 190 | Raised when an operation runs out of memory but the situation may |
| 191 | still be rescued (by deleting some objects). The associated value is |
| 192 | a string indicating what kind of (internal) operation ran out of memory. |
| 193 | Note that because of the underlying memory management architecture |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 194 | (\C{}'s \cfunction{malloc()} function), the interpreter may not |
| 195 | always be able to completely recover from this situation; it |
| 196 | nevertheless raises an exception so that a stack traceback can be |
| 197 | printed, in case a run-away program was the cause. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 198 | \end{excdesc} |
| 199 | |
| 200 | \begin{excdesc}{NameError} |
| 201 | Raised when a local or global name is not found. This applies only |
| 202 | to unqualified names. The associated value is the name that could |
| 203 | not be found. |
| 204 | \end{excdesc} |
| 205 | |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 206 | \begin{excdesc}{NotImplementedError} |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 207 | This exception is derived from \exception{RuntimeError}. In user |
| 208 | defined base classes, abstract methods should raise this exception |
| 209 | when they require derived classes to override the method. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 210 | \versionadded{1.5.2} |
Barry Warsaw | 6d26f4b | 1998-12-01 19:48:04 +0000 | [diff] [blame] | 211 | \end{excdesc} |
| 212 | |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 213 | \begin{excdesc}{OSError} |
| 214 | %xref for os module |
Fred Drake | c457ca7 | 1998-07-23 20:31:53 +0000 | [diff] [blame] | 215 | This class is derived from \exception{EnvironmentError} and is used |
Fred Drake | ffbe687 | 1999-04-22 21:23:22 +0000 | [diff] [blame] | 216 | primarily as the \refmodule{os} module's \code{os.error} exception. |
Fred Drake | 98be47e | 1999-02-01 16:17:40 +0000 | [diff] [blame] | 217 | See \exception{EnvironmentError} above for a description of the |
| 218 | possible associated values. |
Fred Drake | d0bceee | 1999-02-02 18:00:40 +0000 | [diff] [blame] | 219 | \versionadded{1.5.2} |
Barry Warsaw | da00c87 | 1998-07-23 19:57:35 +0000 | [diff] [blame] | 220 | \end{excdesc} |
| 221 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 222 | \begin{excdesc}{OverflowError} |
| 223 | % XXXJH reference to long's and/or int's? |
| 224 | Raised when the result of an arithmetic operation is too large to be |
| 225 | represented. This cannot occur for long integers (which would rather |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 226 | raise \exception{MemoryError} than give up). Because of the lack of |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 227 | standardization of floating point exception handling in \C{}, most |
| 228 | floating point operations also aren't checked. For plain integers, |
| 229 | all operations that can overflow are checked except left shift, where |
| 230 | typical applications prefer to drop bits than raise an exception. |
| 231 | \end{excdesc} |
| 232 | |
| 233 | \begin{excdesc}{RuntimeError} |
| 234 | Raised when an error is detected that doesn't fall in any of the |
| 235 | other categories. The associated value is a string indicating what |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 236 | precisely went wrong. (This exception is mostly a relic from a |
| 237 | previous version of the interpreter; it is not used very much any |
| 238 | more.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 239 | \end{excdesc} |
| 240 | |
| 241 | \begin{excdesc}{SyntaxError} |
| 242 | % XXXJH xref to these functions? |
| 243 | Raised when the parser encounters a syntax error. This may occur in |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 244 | an \keyword{import} statement, in an \keyword{exec} statement, in a call |
| 245 | to the built-in function \function{eval()} or \function{input()}, or |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 246 | when reading the initial script or standard input (also |
| 247 | interactively). |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 248 | |
| 249 | When class exceptions are used, instances of this class have |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 250 | atttributes \member{filename}, \member{lineno}, \member{offset} and |
| 251 | \member{text} for easier access to the details; for string exceptions, |
Guido van Rossum | df3dba0 | 1997-10-05 18:51:26 +0000 | [diff] [blame] | 252 | the associated value is usually a tuple of the form |
| 253 | \code{(message, (filename, lineno, offset, text))}. |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 254 | For class exceptions, \function{str()} returns only the message. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 255 | \end{excdesc} |
| 256 | |
| 257 | \begin{excdesc}{SystemError} |
| 258 | Raised when the interpreter finds an internal error, but the |
| 259 | situation does not look so serious to cause it to abandon all hope. |
| 260 | The associated value is a string indicating what went wrong (in |
| 261 | low-level terms). |
| 262 | |
| 263 | You should report this to the author or maintainer of your Python |
| 264 | interpreter. Be sure to report the version string of the Python |
| 265 | interpreter (\code{sys.version}; it is also printed at the start of an |
| 266 | interactive Python session), the exact error message (the exception's |
| 267 | associated value) and if possible the source of the program that |
| 268 | triggered the error. |
| 269 | \end{excdesc} |
| 270 | |
| 271 | \begin{excdesc}{SystemExit} |
| 272 | % XXXJH xref to module sys? |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 273 | 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] | 274 | is not handled, the Python interpreter exits; no stack traceback is |
| 275 | printed. If the associated value is a plain integer, it specifies the |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 276 | 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] | 277 | \code{None}, the exit status is zero; if it has another type (such as |
| 278 | 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] | 279 | |
| 280 | When class exceptions are used, the instance has an attribute |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 281 | \member{code} which is set to the proposed exit status or error message |
Barry Warsaw | f2b4554 | 1999-02-24 00:27:14 +0000 | [diff] [blame] | 282 | (defaulting to \code{None}). Also, this exception derives directly |
| 283 | from \exception{Exception} and not \exception{StandardError}, since it |
| 284 | is not technically an error. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 285 | |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 286 | A call to \function{sys.exit()} is translated into an exception so that |
| 287 | clean-up handlers (\keyword{finally} clauses of \keyword{try} statements) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 288 | 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] | 289 | running the risk of losing control. The \function{os._exit()} function |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 290 | can be used if it is absolutely positively necessary to exit |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 291 | immediately (e.g., after a \function{fork()} in the child process). |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 292 | \end{excdesc} |
| 293 | |
| 294 | \begin{excdesc}{TypeError} |
| 295 | Raised when a built-in operation or function is applied to an object |
| 296 | of inappropriate type. The associated value is a string giving |
| 297 | details about the type mismatch. |
| 298 | \end{excdesc} |
| 299 | |
Fred Drake | 3cb793e | 2000-04-06 14:48:35 +0000 | [diff] [blame^] | 300 | \begin{excdesc}{UnicodeError} |
| 301 | Raised when a Unicode-related encoding or decoding error occurs. It |
| 302 | is a subclass of \exception{ValueError}. |
| 303 | \end{excdesc} |
| 304 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 305 | \begin{excdesc}{ValueError} |
| 306 | Raised when a built-in operation or function receives an argument |
| 307 | that has the right type but an inappropriate value, and the |
| 308 | situation is not described by a more precise exception such as |
Fred Drake | 27467e4 | 1998-07-23 19:47:41 +0000 | [diff] [blame] | 309 | \exception{IndexError}. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 310 | \end{excdesc} |
| 311 | |
| 312 | \begin{excdesc}{ZeroDivisionError} |
| 313 | Raised when the second argument of a division or modulo operation is |
| 314 | zero. The associated value is a string indicating the type of the |
| 315 | operands and the operation. |
| 316 | \end{excdesc} |