blob: 3f1a30da7c14ec920e7176b85f8a95d325604397 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. _bltin-exceptions:
2
3Built-in Exceptions
4===================
5
Georg Brandl116aa622007-08-15 14:28:22 +00006.. index::
7 statement: try
8 statement: except
9
Georg Brandlfbd1b222009-12-29 21:38:35 +000010In Python, all exceptions must be instances of a class that derives from
11:class:`BaseException`. In a :keyword:`try` statement with an :keyword:`except`
Georg Brandl116aa622007-08-15 14:28:22 +000012clause that mentions a particular class, that clause also handles any exception
13classes derived from that class (but not exception classes from which *it* is
14derived). Two exception classes that are not related via subclassing are never
15equivalent, even if they have the same name.
16
17.. index:: statement: raise
18
19The built-in exceptions listed below can be generated by the interpreter or
20built-in functions. Except where mentioned, they have an "associated value"
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000021indicating the detailed cause of the error. This may be a string or a tuple of
22several items of information (e.g., an error code and a string explaining the
23code). The associated value is usually passed as arguments to the exception
24class's constructor.
Georg Brandl116aa622007-08-15 14:28:22 +000025
26User code can raise built-in exceptions. This can be used to test an exception
27handler or to report an error condition "just like" the situation in which the
28interpreter raises the same exception; but beware that there is nothing to
29prevent user code from raising an inappropriate error.
30
31The built-in exception classes can be sub-classed to define new exceptions;
32programmers are encouraged to at least derive new exceptions from the
33:exc:`Exception` class and not :exc:`BaseException`. More information on
34defining exceptions is available in the Python Tutorial under
35:ref:`tut-userexceptions`.
36
Antoine Pitrouf9c77462011-10-12 16:02:00 +020037
38Base classes
39------------
40
Georg Brandlfbd1b222009-12-29 21:38:35 +000041The following exceptions are used mostly as base classes for other exceptions.
Georg Brandl116aa622007-08-15 14:28:22 +000042
Georg Brandl116aa622007-08-15 14:28:22 +000043.. exception:: BaseException
44
45 The base class for all built-in exceptions. It is not meant to be directly
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000046 inherited by user-defined classes (for that, use :exc:`Exception`). If
Amaury Forgeot d'Arc3b1acf12011-11-22 19:34:08 +010047 :func:`str` is called on an instance of this class, the representation of
48 the argument(s) to the instance are returned, or the empty string when
49 there were no arguments.
Georg Brandlfb6fd5d2011-01-07 18:28:45 +000050
51 .. attribute:: args
52
53 The tuple of arguments given to the exception constructor. Some built-in
54 exceptions (like :exc:`IOError`) expect a certain number of arguments and
55 assign a special meaning to the elements of this tuple, while others are
56 usually called only with a single string giving an error message.
57
58 .. method:: with_traceback(tb)
59
60 This method sets *tb* as the new traceback for the exception and returns
61 the exception object. It is usually used in exception handling code like
62 this::
63
64 try:
65 ...
66 except SomeException:
67 tb = sys.exc_info()[2]
68 raise OtherException(...).with_traceback(tb)
Georg Brandl116aa622007-08-15 14:28:22 +000069
Georg Brandl116aa622007-08-15 14:28:22 +000070
71.. exception:: Exception
72
73 All built-in, non-system-exiting exceptions are derived from this class. All
74 user-defined exceptions should also be derived from this class.
75
Georg Brandl116aa622007-08-15 14:28:22 +000076
77.. exception:: ArithmeticError
78
79 The base class for those built-in exceptions that are raised for various
80 arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`,
81 :exc:`FloatingPointError`.
82
83
Georg Brandl0bdfbfa2010-12-18 17:51:28 +000084.. exception:: BufferError
85
86 Raised when a :ref:`buffer <bufferobjects>` related operation cannot be
87 performed.
88
89
Georg Brandl116aa622007-08-15 14:28:22 +000090.. exception:: LookupError
91
Benjamin Petersonfa0d7032009-06-01 22:42:33 +000092 The base class for the exceptions that are raised when a key or index used on
93 a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. This
94 can be raised directly by :func:`codecs.lookup`.
Georg Brandl116aa622007-08-15 14:28:22 +000095
96
Antoine Pitrouf9c77462011-10-12 16:02:00 +020097Concrete exceptions
98-------------------
Georg Brandl116aa622007-08-15 14:28:22 +000099
Georg Brandlfbd1b222009-12-29 21:38:35 +0000100The following exceptions are the exceptions that are usually raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000101
102.. exception:: AssertionError
103
104 .. index:: statement: assert
105
106 Raised when an :keyword:`assert` statement fails.
107
108
109.. exception:: AttributeError
110
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000111 Raised when an attribute reference (see :ref:`attribute-references`) or
112 assignment fails. (When an object does not support attribute references or
113 attribute assignments at all, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000114
115
116.. exception:: EOFError
117
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000118 Raised when one of the built-in functions (:func:`input` or :func:`raw_input`)
119 hits an end-of-file condition (EOF) without reading any data. (N.B.: the
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000120 :meth:`file.read` and :meth:`file.readline` methods return an empty string
121 when they hit EOF.)
Georg Brandl116aa622007-08-15 14:28:22 +0000122
123
124.. exception:: FloatingPointError
125
126 Raised when a floating point operation fails. This exception is always defined,
127 but can only be raised when Python is configured with the
Éric Araujo713d3032010-11-18 16:38:46 +0000128 ``--with-fpectl`` option, or the :const:`WANT_SIGFPE_HANDLER` symbol is
Georg Brandl116aa622007-08-15 14:28:22 +0000129 defined in the :file:`pyconfig.h` file.
130
131
132.. exception:: GeneratorExit
133
Christian Heimescbf3b5c2007-12-03 21:02:03 +0000134 Raise when a :term:`generator`\'s :meth:`close` method is called. It
135 directly inherits from :exc:`BaseException` instead of :exc:`Exception` since
136 it is technically not an error.
Georg Brandl116aa622007-08-15 14:28:22 +0000137
Georg Brandl116aa622007-08-15 14:28:22 +0000138
Georg Brandl116aa622007-08-15 14:28:22 +0000139.. exception:: ImportError
140
141 Raised when an :keyword:`import` statement fails to find the module definition
142 or when a ``from ... import`` fails to find a name that is to be imported.
143
Georg Brandl116aa622007-08-15 14:28:22 +0000144
145.. exception:: IndexError
146
Georg Brandl95817b32008-05-11 14:30:18 +0000147 Raised when a sequence subscript is out of range. (Slice indices are
148 silently truncated to fall in the allowed range; if an index is not an
149 integer, :exc:`TypeError` is raised.)
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000151 .. XXX xref to sequences
Georg Brandl116aa622007-08-15 14:28:22 +0000152
153
154.. exception:: KeyError
155
156 Raised when a mapping (dictionary) key is not found in the set of existing keys.
157
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000158 .. XXX xref to mapping objects?
Georg Brandl116aa622007-08-15 14:28:22 +0000159
160
161.. exception:: KeyboardInterrupt
162
163 Raised when the user hits the interrupt key (normally :kbd:`Control-C` or
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000164 :kbd:`Delete`). During execution, a check for interrupts is made
165 regularly. The exception inherits from :exc:`BaseException` so as to not be
166 accidentally caught by code that catches :exc:`Exception` and thus prevent
167 the interpreter from exiting.
Georg Brandl116aa622007-08-15 14:28:22 +0000168
Georg Brandl116aa622007-08-15 14:28:22 +0000169
170.. exception:: MemoryError
171
172 Raised when an operation runs out of memory but the situation may still be
173 rescued (by deleting some objects). The associated value is a string indicating
174 what kind of (internal) operation ran out of memory. Note that because of the
Georg Brandl60203b42010-10-06 10:11:56 +0000175 underlying memory management architecture (C's :c:func:`malloc` function), the
Georg Brandl116aa622007-08-15 14:28:22 +0000176 interpreter may not always be able to completely recover from this situation; it
177 nevertheless raises an exception so that a stack traceback can be printed, in
178 case a run-away program was the cause.
179
180
181.. exception:: NameError
182
183 Raised when a local or global name is not found. This applies only to
184 unqualified names. The associated value is an error message that includes the
185 name that could not be found.
186
187
188.. exception:: NotImplementedError
189
190 This exception is derived from :exc:`RuntimeError`. In user defined base
191 classes, abstract methods should raise this exception when they require derived
192 classes to override the method.
193
Georg Brandl116aa622007-08-15 14:28:22 +0000194
195.. exception:: OSError
196
Christian Heimesa62da1d2008-01-12 19:39:10 +0000197 .. index:: module: errno
198
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200199 This exception is raised when a system function returns a system-related
200 error, including I/O failures such as "file not found" or "disk full"
201 (not for illegal argument types or other incidental errors). Often a
202 subclass of :exc:`OSError` will actually be raised as described in
203 `OS exceptions`_ below. The :attr:`errno` attribute is a numeric error
204 code from the C variable :c:data:`errno`.
Christian Heimesa62da1d2008-01-12 19:39:10 +0000205
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200206 Under Windows, the :attr:`winerror` attribute gives you the native
207 Windows error code. The :attr:`errno` attribute is then an approximate
208 translation, in POSIX terms, of that native error code.
209
210 Under all platforms, the :attr:`strerror` attribute is the corresponding
211 error message as provided by the operating system (as formatted by the C
212 functions :c:func:`perror` under POSIX, and :c:func:`FormatMessage`
213 Windows).
214
215 For exceptions that involve a file system path (such as :func:`open` or
216 :func:`os.unlink`), the exception instance will contain an additional
217 attribute, :attr:`filename`, which is the file name passed to the function.
Georg Brandl116aa622007-08-15 14:28:22 +0000218
Antoine Pitrou195e7022011-10-12 16:46:46 +0200219 .. versionchanged:: 3.3
220 :exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`,
221 :exc:`VMSError`, :exc:`socket.error`, :exc:`select.error` and
222 :exc:`mmap.error` have been merged into :exc:`OSError`.
223
Georg Brandl116aa622007-08-15 14:28:22 +0000224
225.. exception:: OverflowError
226
227 Raised when the result of an arithmetic operation is too large to be
Georg Brandlba956ae2007-11-29 17:24:34 +0000228 represented. This cannot occur for integers (which would rather raise
Georg Brandl116aa622007-08-15 14:28:22 +0000229 :exc:`MemoryError` than give up). Because of the lack of standardization of
230 floating point exception handling in C, most floating point operations also
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000231 aren't checked.
Georg Brandl116aa622007-08-15 14:28:22 +0000232
233
234.. exception:: ReferenceError
235
236 This exception is raised when a weak reference proxy, created by the
237 :func:`weakref.proxy` function, is used to access an attribute of the referent
238 after it has been garbage collected. For more information on weak references,
239 see the :mod:`weakref` module.
240
Georg Brandl116aa622007-08-15 14:28:22 +0000241
242.. exception:: RuntimeError
243
244 Raised when an error is detected that doesn't fall in any of the other
245 categories. The associated value is a string indicating what precisely went
246 wrong. (This exception is mostly a relic from a previous version of the
247 interpreter; it is not used very much any more.)
248
249
250.. exception:: StopIteration
251
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000252 Raised by built-in function :func:`next` and an :term:`iterator`\'s
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000253 :meth:`__next__` method to signal that there are no further items to be
254 produced by the iterator.
255
256 The exception object has a single attribute :attr:`value`, which is
257 given as an argument when constructing the exception, and defaults
258 to :const:`None`.
259
260 When a generator function returns, a new :exc:`StopIteration` instance is
261 raised, and the value returned by the function is used as the
262 :attr:`value` parameter to the constructor of the exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000263
Nick Coghlan0ed80192012-01-14 14:43:24 +1000264 .. versionchanged:: 3.3
265 Added ``value`` attribute and the ability for generator functions to
266 use it to return a value.
Georg Brandl116aa622007-08-15 14:28:22 +0000267
268.. exception:: SyntaxError
269
270 Raised when the parser encounters a syntax error. This may occur in an
271 :keyword:`import` statement, in a call to the built-in functions :func:`exec`
272 or :func:`eval`, or when reading the initial script or standard input
273 (also interactively).
274
Georg Brandl116aa622007-08-15 14:28:22 +0000275 Instances of this class have attributes :attr:`filename`, :attr:`lineno`,
276 :attr:`offset` and :attr:`text` for easier access to the details. :func:`str`
277 of the exception instance returns only the message.
278
279
Georg Brandl0bdfbfa2010-12-18 17:51:28 +0000280.. exception:: IndentationError
281
282 Base class for syntax errors related to incorrect indentation. This is a
283 subclass of :exc:`SyntaxError`.
284
285
286.. exception:: TabError
287
288 Raised when indentation contains an inconsistent use of tabs and spaces.
289 This is a subclass of :exc:`IndentationError`.
290
291
Georg Brandl116aa622007-08-15 14:28:22 +0000292.. exception:: SystemError
293
294 Raised when the interpreter finds an internal error, but the situation does not
295 look so serious to cause it to abandon all hope. The associated value is a
296 string indicating what went wrong (in low-level terms).
297
298 You should report this to the author or maintainer of your Python interpreter.
299 Be sure to report the version of the Python interpreter (``sys.version``; it is
300 also printed at the start of an interactive Python session), the exact error
301 message (the exception's associated value) and if possible the source of the
302 program that triggered the error.
303
304
305.. exception:: SystemExit
306
307 This exception is raised by the :func:`sys.exit` function. When it is not
308 handled, the Python interpreter exits; no stack traceback is printed. If the
Georg Brandl95817b32008-05-11 14:30:18 +0000309 associated value is an integer, it specifies the system exit status (passed
Georg Brandl60203b42010-10-06 10:11:56 +0000310 to C's :c:func:`exit` function); if it is ``None``, the exit status is zero;
Georg Brandl95817b32008-05-11 14:30:18 +0000311 if it has another type (such as a string), the object's value is printed and
312 the exit status is one.
Georg Brandl116aa622007-08-15 14:28:22 +0000313
Georg Brandl116aa622007-08-15 14:28:22 +0000314 Instances have an attribute :attr:`code` which is set to the proposed exit
315 status or error message (defaulting to ``None``). Also, this exception derives
316 directly from :exc:`BaseException` and not :exc:`Exception`, since it is not
317 technically an error.
318
319 A call to :func:`sys.exit` is translated into an exception so that clean-up
320 handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be
321 executed, and so that a debugger can execute a script without running the risk
322 of losing control. The :func:`os._exit` function can be used if it is
323 absolutely positively necessary to exit immediately (for example, in the child
324 process after a call to :func:`fork`).
325
326 The exception inherits from :exc:`BaseException` instead of :exc:`Exception` so
327 that it is not accidentally caught by code that catches :exc:`Exception`. This
328 allows the exception to properly propagate up and cause the interpreter to exit.
329
Georg Brandl116aa622007-08-15 14:28:22 +0000330
331.. exception:: TypeError
332
333 Raised when an operation or function is applied to an object of inappropriate
334 type. The associated value is a string giving details about the type mismatch.
335
336
337.. exception:: UnboundLocalError
338
339 Raised when a reference is made to a local variable in a function or method, but
340 no value has been bound to that variable. This is a subclass of
341 :exc:`NameError`.
342
Georg Brandl116aa622007-08-15 14:28:22 +0000343
344.. exception:: UnicodeError
345
346 Raised when a Unicode-related encoding or decoding error occurs. It is a
347 subclass of :exc:`ValueError`.
348
Georg Brandl116aa622007-08-15 14:28:22 +0000349
350.. exception:: UnicodeEncodeError
351
352 Raised when a Unicode-related error occurs during encoding. It is a subclass of
353 :exc:`UnicodeError`.
354
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. exception:: UnicodeDecodeError
357
358 Raised when a Unicode-related error occurs during decoding. It is a subclass of
359 :exc:`UnicodeError`.
360
Georg Brandl116aa622007-08-15 14:28:22 +0000361
362.. exception:: UnicodeTranslateError
363
364 Raised when a Unicode-related error occurs during translating. It is a subclass
365 of :exc:`UnicodeError`.
366
Georg Brandl116aa622007-08-15 14:28:22 +0000367
368.. exception:: ValueError
369
370 Raised when a built-in operation or function receives an argument that has the
371 right type but an inappropriate value, and the situation is not described by a
372 more precise exception such as :exc:`IndexError`.
373
374
Georg Brandl116aa622007-08-15 14:28:22 +0000375.. exception:: ZeroDivisionError
376
377 Raised when the second argument of a division or modulo operation is zero. The
378 associated value is a string indicating the type of the operands and the
379 operation.
380
Georg Brandlfbd1b222009-12-29 21:38:35 +0000381
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200382The following exceptions are kept for compatibility with previous versions;
383starting from Python 3.3, they are aliases of :exc:`OSError`.
384
385.. exception:: EnvironmentError
386
387.. exception:: IOError
388
389.. exception:: VMSError
390
391 Only available on VMS.
392
393.. exception:: WindowsError
394
395 Only available on Windows.
396
397
398OS exceptions
399^^^^^^^^^^^^^
400
401The following exceptions are subclasses of :exc:`OSError`, they get raised
402depending on the system error code.
403
404.. exception:: BlockingIOError
405
406 Raised when an operation would block on an object (e.g. socket) set
407 for non-blocking operation.
408 Corresponds to :c:data:`errno` ``EAGAIN``, ``EALREADY``,
409 ``EWOULDBLOCK`` and ``EINPROGRESS``.
410
Antoine Pitrouf55011f2011-10-12 18:57:23 +0200411 In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have
412 one more attribute:
413
414 .. attribute:: characters_written
415
416 An integer containing the number of characters written to the stream
417 before it blocked. This attribute is available when using the
418 buffered I/O classes from the :mod:`io` module.
419
Antoine Pitrouf9c77462011-10-12 16:02:00 +0200420.. exception:: ChildProcessError
421
422 Raised when an operation on a child process failed.
423 Corresponds to :c:data:`errno` ``ECHILD``.
424
425.. exception:: ConnectionError
426
427 A base class for connection-related issues. Subclasses are
428 :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`,
429 :exc:`ConnectionRefusedError` and :exc:`ConnectionResetError`.
430
431 .. exception:: BrokenPipeError
432
433 A subclass of :exc:`ConnectionError`, raised when trying to write on a
434 pipe while the other end has been closed, or trying to write on a socket
435 which has been shutdown for writing.
436 Corresponds to :c:data:`errno` ``EPIPE`` and ``ESHUTDOWN``.
437
438 .. exception:: ConnectionAbortedError
439
440 A subclass of :exc:`ConnectionError`, raised when a connection attempt
441 is aborted by the peer.
442 Corresponds to :c:data:`errno` ``ECONNABORTED``.
443
444 .. exception:: ConnectionRefusedError
445
446 A subclass of :exc:`ConnectionError`, raised when a connection attempt
447 is refused by the peer.
448 Corresponds to :c:data:`errno` ``ECONNREFUSED``.
449
450 .. exception:: ConnectionResetError
451
452 A subclass of :exc:`ConnectionError`, raised when a connection is
453 reset by the peer.
454 Corresponds to :c:data:`errno` ``ECONNRESET``.
455
456.. exception:: FileExistsError
457
458 Raised when trying to create a file or directory which already exists.
459 Corresponds to :c:data:`errno` ``EEXIST``.
460
461.. exception:: FileNotFoundError
462
463 Raised when a file or directory is requested but doesn't exist.
464 Corresponds to :c:data:`errno` ``ENOENT``.
465
466.. exception:: InterruptedError
467
468 Raised when a system call is interrupted by an incoming signal.
469 Corresponds to :c:data:`errno` ``EEINTR``.
470
471.. exception:: IsADirectoryError
472
473 Raised when a file operation (such as :func:`os.remove`) is requested
474 on a directory.
475 Corresponds to :c:data:`errno` ``EISDIR``.
476
477.. exception:: NotADirectoryError
478
479 Raised when a directory operation (such as :func:`os.listdir`) is requested
480 on something which is not a directory.
481 Corresponds to :c:data:`errno` ``ENOTDIR``.
482
483.. exception:: PermissionError
484
485 Raised when trying to run an operation without the adequate access
486 rights - for example filesystem permissions.
487 Corresponds to :c:data:`errno` ``EACCES`` and ``EPERM``.
488
489.. exception:: ProcessLookupError
490
491 Raised when a given process doesn't exist.
492 Corresponds to :c:data:`errno` ``ESRCH``.
493
494.. exception:: TimeoutError
495
496 Raised when a system function timed out at the system level.
497 Corresponds to :c:data:`errno` ``ETIMEDOUT``.
498
499.. versionadded:: 3.3
500 All the above :exc:`OSError` subclasses were added.
501
502
503.. seealso::
504
505 :pep:`3151` - Reworking the OS and IO exception hierarchy
506 PEP written and implemented by Antoine Pitrou.
507
508
509Warnings
510--------
511
Georg Brandl116aa622007-08-15 14:28:22 +0000512The following exceptions are used as warning categories; see the :mod:`warnings`
513module for more information.
514
Georg Brandl116aa622007-08-15 14:28:22 +0000515.. exception:: Warning
516
517 Base class for warning categories.
518
519
520.. exception:: UserWarning
521
522 Base class for warnings generated by user code.
523
524
525.. exception:: DeprecationWarning
526
527 Base class for warnings about deprecated features.
528
529
530.. exception:: PendingDeprecationWarning
531
532 Base class for warnings about features which will be deprecated in the future.
533
534
535.. exception:: SyntaxWarning
536
537 Base class for warnings about dubious syntax
538
539
540.. exception:: RuntimeWarning
541
542 Base class for warnings about dubious runtime behavior.
543
544
545.. exception:: FutureWarning
546
547 Base class for warnings about constructs that will change semantically in the
548 future.
549
550
551.. exception:: ImportWarning
552
553 Base class for warnings about probable mistakes in module imports.
554
Georg Brandl116aa622007-08-15 14:28:22 +0000555
556.. exception:: UnicodeWarning
557
558 Base class for warnings related to Unicode.
559
Georg Brandl08be72d2010-10-24 15:11:22 +0000560
Guido van Rossum98297ee2007-11-06 21:34:58 +0000561.. exception:: BytesWarning
Georg Brandl116aa622007-08-15 14:28:22 +0000562
Guido van Rossum98297ee2007-11-06 21:34:58 +0000563 Base class for warnings related to :class:`bytes` and :class:`buffer`.
564
Georg Brandl08be72d2010-10-24 15:11:22 +0000565
566.. exception:: ResourceWarning
567
568 Base class for warnings related to resource usage.
569
570 .. versionadded:: 3.2
571
572
573
Alexandre Vassalottic22c6f22009-07-21 00:51:58 +0000574Exception hierarchy
575-------------------
Guido van Rossum98297ee2007-11-06 21:34:58 +0000576
577The class hierarchy for built-in exceptions is:
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579.. literalinclude:: ../../Lib/test/exception_hierarchy.txt