1.. _bltin-exceptions: 2 3Built-in Exceptions 4=================== 5 6.. module:: exceptions 7 :synopsis: Standard exception classes. 8 9 10Exceptions should be class objects. The exceptions are defined in the module 11:mod:`exceptions`. This module never needs to be imported explicitly: the 12exceptions are provided in the built-in namespace as well as the 13:mod:`exceptions` module. 14 15.. index:: 16 statement: try 17 statement: except 18 19For class exceptions, in a :keyword:`try` statement with an :keyword:`except` 20clause that mentions a particular class, that clause also handles any exception 21classes derived from that class (but not exception classes from which *it* is 22derived). Two exception classes that are not related via subclassing are never 23equivalent, even if they have the same name. 24 25.. index:: statement: raise 26 27The built-in exceptions listed below can be generated by the interpreter or 28built-in functions. Except where mentioned, they have an "associated value" 29indicating the detailed cause of the error. This may be a string or a tuple 30containing several items of information (e.g., an error code and a string 31explaining the code). The associated value is the second argument to the 32:keyword:`raise` statement. If the exception class is derived from the standard 33root class :exc:`BaseException`, the associated value is present as the 34exception instance's :attr:`args` attribute. 35 36User code can raise built-in exceptions. This can be used to test an exception 37handler or to report an error condition "just like" the situation in which the 38interpreter raises the same exception; but beware that there is nothing to 39prevent user code from raising an inappropriate error. 40 41The built-in exception classes can be subclassed to define new exceptions; 42programmers are encouraged to derive new exceptions from the :exc:`Exception` 43class or one of its subclasses, and not from :exc:`BaseException`. More 44information on defining exceptions is available in the Python Tutorial under 45:ref:`tut-userexceptions`. 46 47The following exceptions are only used as base classes for other exceptions. 48 49.. exception:: BaseException 50 51 The base class for all built-in exceptions. It is not meant to be directly 52 inherited by user-defined classes (for that, use :exc:`Exception`). If 53 :func:`str` or :func:`unicode` is called on an instance of this class, the 54 representation of the argument(s) to the instance are returned, or the empty 55 string when there were no arguments. 56 57 .. versionadded:: 2.5 58 59 .. attribute:: args 60 61 The tuple of arguments given to the exception constructor. Some built-in 62 exceptions (like :exc:`IOError`) expect a certain number of arguments and 63 assign a special meaning to the elements of this tuple, while others are 64 usually called only with a single string giving an error message. 65 66 67.. exception:: Exception 68 69 All built-in, non-system-exiting exceptions are derived from this class. All 70 user-defined exceptions should also be derived from this class. 71 72 .. versionchanged:: 2.5 73 Changed to inherit from :exc:`BaseException`. 74 75 76.. exception:: StandardError 77 78 The base class for all built-in exceptions except :exc:`StopIteration`, 79 :exc:`GeneratorExit`, :exc:`KeyboardInterrupt` and :exc:`SystemExit`. 80 :exc:`StandardError` itself is derived from :exc:`Exception`. 81 82 83.. exception:: ArithmeticError 84 85 The base class for those built-in exceptions that are raised for various 86 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, 87 :exc:`FloatingPointError`. 88 89 90.. exception:: BufferError 91 92 Raised when a :ref:`buffer <bufferobjects>` related operation cannot be 93 performed. 94 95 96.. exception:: LookupError 97 98 The base class for the exceptions that are raised when a key or index used on 99 a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This 100 can be raised directly by :func:`codecs.lookup`. 101 102 103.. exception:: EnvironmentError 104 105 The base class for exceptions that can occur outside the Python system: 106 :exc:`IOError`, :exc:`OSError`. When exceptions of this type are created with a 107 2-tuple, the first item is available on the instance's :attr:`errno` attribute 108 (it is assumed to be an error number), and the second item is available on the 109 :attr:`strerror` attribute (it is usually the associated error message). The 110 tuple itself is also available on the :attr:`args` attribute. 111 112 .. versionadded:: 1.5.2 113 114 When an :exc:`EnvironmentError` exception is instantiated with a 3-tuple, the 115 first two items are available as above, while the third item is available on the 116 :attr:`filename` attribute. However, for backwards compatibility, the 117 :attr:`args` attribute contains only a 2-tuple of the first two constructor 118 arguments. 119 120 The :attr:`filename` attribute is ``None`` when this exception is created with 121 other than 3 arguments. The :attr:`errno` and :attr:`strerror` attributes are 122 also ``None`` when the instance was created with other than 2 or 3 arguments. 123 In this last case, :attr:`args` contains the verbatim constructor arguments as a 124 tuple. 125 126The following exceptions are the exceptions that are actually raised. 127 128 129.. exception:: AssertionError 130 131 .. index:: statement: assert 132 133 Raised when an :keyword:`assert` statement fails. 134 135 136.. exception:: AttributeError 137 138 Raised when an attribute reference (see :ref:`attribute-references`) or 139 assignment fails. (When an object does not support attribute references or 140 attribute assignments at all, :exc:`TypeError` is raised.) 141 142 143.. exception:: EOFError 144 145 Raised when one of the built-in functions (:func:`input` or :func:`raw_input`) 146 hits an end-of-file condition (EOF) without reading any data. (N.B.: the 147 :meth:`file.read` and :meth:`file.readline` methods return an empty string 148 when they hit EOF.) 149 150 151.. exception:: FloatingPointError 152 153 Raised when a floating point operation fails. This exception is always defined, 154 but can only be raised when Python is configured with the 155 ``--with-fpectl`` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is 156 defined in the :file:`pyconfig.h` file. 157 158 159.. exception:: GeneratorExit 160 161 Raised when a :term:`generator`\'s :meth:`close` method is called. It 162 directly inherits from :exc:`BaseException` instead of :exc:`StandardError` 163 since it is technically not an error. 164 165 .. versionadded:: 2.5 166 167 .. versionchanged:: 2.6 168 Changed to inherit from :exc:`BaseException`. 169 170.. exception:: IOError 171 172 Raised when an I/O operation (such as a :keyword:`print` statement, the built-in 173 :func:`open` function or a method of a file object) fails for an I/O-related 174 reason, e.g., "file not found" or "disk full". 175 176 This class is derived from :exc:`EnvironmentError`. See the discussion above 177 for more information on exception instance attributes. 178 179 .. versionchanged:: 2.6 180 Changed :exc:`socket.error` to use this as a base class. 181 182 183.. exception:: ImportError 184 185 Raised when an :keyword:`import` statement fails to find the module definition 186 or when a ``from ... import`` fails to find a name that is to be imported. 187 188 189.. exception:: IndexError 190 191 Raised when a sequence subscript is out of range. (Slice indices are silently 192 truncated to fall in the allowed range; if an index is not a plain integer, 193 :exc:`TypeError` is raised.) 194 195 .. XXX xref to sequences 196 197 198.. exception:: KeyError 199 200 Raised when a mapping (dictionary) key is not found in the set of existing keys. 201 202 .. XXX xref to mapping objects? 203 204 205.. exception:: KeyboardInterrupt 206 207 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or 208 :kbd:`Delete`). During execution, a check for interrupts is made regularly. 209 Interrupts typed when a built-in function :func:`input` or :func:`raw_input` is 210 waiting for input also raise this exception. The exception inherits from 211 :exc:`BaseException` so as to not be accidentally caught by code that catches 212 :exc:`Exception` and thus prevent the interpreter from exiting. 213 214 .. versionchanged:: 2.5 215 Changed to inherit from :exc:`BaseException`. 216 217 218.. exception:: MemoryError 219 220 Raised when an operation runs out of memory but the situation may still be 221 rescued (by deleting some objects). The associated value is a string indicating 222 what kind of (internal) operation ran out of memory. Note that because of the 223 underlying memory management architecture (C's :c:func:`malloc` function), the 224 interpreter may not always be able to completely recover from this situation; it 225 nevertheless raises an exception so that a stack traceback can be printed, in 226 case a run-away program was the cause. 227 228 229.. exception:: NameError 230 231 Raised when a local or global name is not found. This applies only to 232 unqualified names. The associated value is an error message that includes the 233 name that could not be found. 234 235 236.. exception:: NotImplementedError 237 238 This exception is derived from :exc:`RuntimeError`. In user defined base 239 classes, abstract methods should raise this exception when they require derived 240 classes to override the method. 241 242 .. versionadded:: 1.5.2 243 244 245.. exception:: OSError 246 247 .. index:: module: errno 248 249 This exception is derived from :exc:`EnvironmentError`. It is raised when a 250 function returns a system-related error (not for illegal argument types or 251 other incidental errors). The :attr:`errno` attribute is a numeric error 252 code from :c:data:`errno`, and the :attr:`strerror` attribute is the 253 corresponding string, as would be printed by the C function :c:func:`perror`. 254 See the module :mod:`errno`, which contains names for the error codes defined 255 by the underlying operating system. 256 257 For exceptions that involve a file system path (such as :func:`chdir` or 258 :func:`unlink`), the exception instance will contain a third attribute, 259 :attr:`filename`, which is the file name passed to the function. 260 261 .. versionadded:: 1.5.2 262 263 264.. exception:: OverflowError 265 266 Raised when the result of an arithmetic operation is too large to be 267 represented. This cannot occur for long integers (which would rather raise 268 :exc:`MemoryError` than give up) and for most operations with plain integers, 269 which return a long integer instead. Because of the lack of standardization 270 of floating point exception handling in C, most floating point operations 271 also aren't checked. 272 273 274.. exception:: ReferenceError 275 276 This exception is raised when a weak reference proxy, created by the 277 :func:`weakref.proxy` function, is used to access an attribute of the referent 278 after it has been garbage collected. For more information on weak references, 279 see the :mod:`weakref` module. 280 281 .. versionadded:: 2.2 282 Previously known as the :exc:`weakref.ReferenceError` exception. 283 284 285.. exception:: RuntimeError 286 287 Raised when an error is detected that doesn't fall in any of the other 288 categories. The associated value is a string indicating what precisely went 289 wrong. 290 291 292.. exception:: StopIteration 293 294 Raised by an :term:`iterator`\'s :meth:`~iterator.next` method to signal that 295 there are no further values. This is derived from :exc:`Exception` rather 296 than :exc:`StandardError`, since this is not considered an error in its 297 normal application. 298 299 .. versionadded:: 2.2 300 301 302.. exception:: SyntaxError 303 304 Raised when the parser encounters a syntax error. This may occur in an 305 :keyword:`import` statement, in an :keyword:`exec` statement, in a call to the 306 built-in function :func:`eval` or :func:`input`, or when reading the initial 307 script or standard input (also interactively). 308 309 Instances of this class have attributes :attr:`filename`, :attr:`lineno`, 310 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str` 311 of the exception instance returns only the message. 312 313 314.. exception:: IndentationError 315 316 Base class for syntax errors related to incorrect indentation. This is a 317 subclass of :exc:`SyntaxError`. 318 319 320.. exception:: TabError 321 322 Raised when indentation contains an inconsistent use of tabs and spaces. 323 This is a subclass of :exc:`IndentationError`. 324 325 326.. exception:: SystemError 327 328 Raised when the interpreter finds an internal error, but the situation does not 329 look so serious to cause it to abandon all hope. The associated value is a 330 string indicating what went wrong (in low-level terms). 331 332 You should report this to the author or maintainer of your Python interpreter. 333 Be sure to report the version of the Python interpreter (``sys.version``; it is 334 also printed at the start of an interactive Python session), the exact error 335 message (the exception's associated value) and if possible the source of the 336 program that triggered the error. 337 338 339.. exception:: SystemExit 340 341 This exception is raised by the :func:`sys.exit` function. When it is not 342 handled, the Python interpreter exits; no stack traceback is printed. If the 343 associated value is a plain integer, it specifies the system exit status (passed 344 to C's :c:func:`exit` function); if it is ``None``, the exit status is zero; if 345 it has another type (such as a string), the object's value is printed and the 346 exit status is one. 347 348 Instances have an attribute :attr:`!code` which is set to the proposed exit 349 status or error message (defaulting to ``None``). Also, this exception derives 350 directly from :exc:`BaseException` and not :exc:`StandardError`, since it is not 351 technically an error. 352 353 A call to :func:`sys.exit` is translated into an exception so that clean-up 354 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be 355 executed, and so that a debugger can execute a script without running the risk 356 of losing control. The :func:`os._exit` function can be used if it is 357 absolutely positively necessary to exit immediately (for example, in the child 358 process after a call to :func:`os.fork`). 359 360 The exception inherits from :exc:`BaseException` instead of :exc:`StandardError` 361 or :exc:`Exception` so that it is not accidentally caught by code that catches 362 :exc:`Exception`. This allows the exception to properly propagate up and cause 363 the interpreter to exit. 364 365 .. versionchanged:: 2.5 366 Changed to inherit from :exc:`BaseException`. 367 368 369.. exception:: TypeError 370 371 Raised when an operation or function is applied to an object of inappropriate 372 type. The associated value is a string giving details about the type mismatch. 373 374 375.. exception:: UnboundLocalError 376 377 Raised when a reference is made to a local variable in a function or method, but 378 no value has been bound to that variable. This is a subclass of 379 :exc:`NameError`. 380 381 .. versionadded:: 2.0 382 383 384.. exception:: UnicodeError 385 386 Raised when a Unicode-related encoding or decoding error occurs. It is a 387 subclass of :exc:`ValueError`. 388 389 :exc:`UnicodeError` has attributes that describe the encoding or decoding 390 error. For example, ``err.object[err.start:err.end]`` gives the particular 391 invalid input that the codec failed on. 392 393 .. attribute:: encoding 394 395 The name of the encoding that raised the error. 396 397 .. attribute:: reason 398 399 A string describing the specific codec error. 400 401 .. attribute:: object 402 403 The object the codec was attempting to encode or decode. 404 405 .. attribute:: start 406 407 The first index of invalid data in :attr:`object`. 408 409 .. attribute:: end 410 411 The index after the last invalid data in :attr:`object`. 412 413 .. versionadded:: 2.0 414 415 416.. exception:: UnicodeEncodeError 417 418 Raised when a Unicode-related error occurs during encoding. It is a subclass of 419 :exc:`UnicodeError`. 420 421 .. versionadded:: 2.3 422 423 424.. exception:: UnicodeDecodeError 425 426 Raised when a Unicode-related error occurs during decoding. It is a subclass of 427 :exc:`UnicodeError`. 428 429 .. versionadded:: 2.3 430 431 432.. exception:: UnicodeTranslateError 433 434 Raised when a Unicode-related error occurs during translating. It is a subclass 435 of :exc:`UnicodeError`. 436 437 .. versionadded:: 2.3 438 439 440.. exception:: ValueError 441 442 Raised when an operation or function receives an argument that has the 443 right type but an inappropriate value, and the situation is not described by a 444 more precise exception such as :exc:`IndexError`. 445 446 447.. exception:: VMSError 448 449 Only available on VMS. Raised when a VMS-specific error occurs. 450 451 452.. exception:: WindowsError 453 454 Raised when a Windows-specific error occurs or when the error number does not 455 correspond to an :c:data:`errno` value. The :attr:`winerror` and 456 :attr:`strerror` values are created from the return values of the 457 :c:func:`GetLastError` and :c:func:`FormatMessage` functions from the Windows 458 Platform API. The :attr:`errno` value maps the :attr:`winerror` value to 459 corresponding ``errno.h`` values. This is a subclass of :exc:`OSError`. 460 461 .. versionadded:: 2.0 462 463 .. versionchanged:: 2.5 464 Previous versions put the :c:func:`GetLastError` codes into :attr:`errno`. 465 466 467.. exception:: ZeroDivisionError 468 469 Raised when the second argument of a division or modulo operation is zero. The 470 associated value is a string indicating the type of the operands and the 471 operation. 472 473The following exceptions are used as warning categories; see the :mod:`warnings` 474module for more information. 475 476 477.. exception:: Warning 478 479 Base class for warning categories. 480 481 482.. exception:: UserWarning 483 484 Base class for warnings generated by user code. 485 486 487.. exception:: DeprecationWarning 488 489 Base class for warnings about deprecated features. 490 491 492.. exception:: PendingDeprecationWarning 493 494 Base class for warnings about features which will be deprecated in the future. 495 496 497.. exception:: SyntaxWarning 498 499 Base class for warnings about dubious syntax. 500 501 502.. exception:: RuntimeWarning 503 504 Base class for warnings about dubious runtime behavior. 505 506 507.. exception:: FutureWarning 508 509 Base class for warnings about constructs that will change semantically in the 510 future. 511 512 513.. exception:: ImportWarning 514 515 Base class for warnings about probable mistakes in module imports. 516 517 .. versionadded:: 2.5 518 519 520.. exception:: UnicodeWarning 521 522 Base class for warnings related to Unicode. 523 524 .. versionadded:: 2.5 525 526 527Exception hierarchy 528------------------- 529 530The class hierarchy for built-in exceptions is: 531 532.. literalinclude:: ../../Lib/test/exception_hierarchy.txt 533