blob: dd1e026cb0716aa4af976577eb16abd84ce68aca [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: c
2
3
4.. _exceptionhandling:
5
6******************
7Exception Handling
8******************
9
10The functions described in this chapter will let you handle and raise Python
11exceptions. It is important to understand some of the basics of Python
Antoine Pitrou550ff722014-09-30 21:56:10 +020012exception handling. It works somewhat like the POSIX :c:data:`errno` variable:
Georg Brandl116aa622007-08-15 14:28:22 +000013there is a global indicator (per thread) of the last error that occurred. Most
Antoine Pitrou550ff722014-09-30 21:56:10 +020014C API functions don't clear this on success, but will set it to indicate the
15cause of the error on failure. Most C API functions also return an error
16indicator, usually *NULL* if they are supposed to return a pointer, or ``-1``
17if they return an integer (exception: the :c:func:`PyArg_\*` functions
18return ``1`` for success and ``0`` for failure).
19
20Concretely, the error indicator consists of three object pointers: the
21exception's type, the exception's value, and the traceback object. Any
22of those pointers can be NULL if non-set (although some combinations are
23forbidden, for example you can't have a non-NULL traceback if the exception
24type is NULL).
Georg Brandl116aa622007-08-15 14:28:22 +000025
26When a function must fail because some function it called failed, it generally
27doesn't set the error indicator; the function it called already set it. It is
28responsible for either handling the error and clearing the exception or
29returning after cleaning up any resources it holds (such as object references or
30memory allocations); it should *not* continue normally if it is not prepared to
31handle the error. If returning due to an error, it is important to indicate to
32the caller that an error has been set. If the error is not handled or carefully
33propagated, additional calls into the Python/C API may not behave as intended
34and may fail in mysterious ways.
35
Antoine Pitrou550ff722014-09-30 21:56:10 +020036.. note::
37 The error indicator is **not** the result of :func:`sys.exc_info()`.
38 The former corresponds to an exception that is not yet caught (and is
39 therefore still propagating), while the latter returns an exception after
40 it is caught (and has therefore stopped propagating).
Georg Brandl116aa622007-08-15 14:28:22 +000041
Antoine Pitrou550ff722014-09-30 21:56:10 +020042
43Printing and clearing
44=====================
45
46
47.. c:function:: void PyErr_Clear()
48
49 Clear the error indicator. If the error indicator is not set, there is no
50 effect.
Georg Brandl116aa622007-08-15 14:28:22 +000051
52
Georg Brandl60203b42010-10-06 10:11:56 +000053.. c:function:: void PyErr_PrintEx(int set_sys_last_vars)
Georg Brandl116aa622007-08-15 14:28:22 +000054
55 Print a standard traceback to ``sys.stderr`` and clear the error indicator.
56 Call this function only when the error indicator is set. (Otherwise it will
57 cause a fatal error!)
58
Georg Brandl115fb352009-02-05 10:56:37 +000059 If *set_sys_last_vars* is nonzero, the variables :data:`sys.last_type`,
60 :data:`sys.last_value` and :data:`sys.last_traceback` will be set to the
61 type, value and traceback of the printed exception, respectively.
62
63
Georg Brandl60203b42010-10-06 10:11:56 +000064.. c:function:: void PyErr_Print()
Georg Brandl115fb352009-02-05 10:56:37 +000065
66 Alias for ``PyErr_PrintEx(1)``.
67
Georg Brandl116aa622007-08-15 14:28:22 +000068
Antoine Pitrou550ff722014-09-30 21:56:10 +020069.. c:function:: void PyErr_WriteUnraisable(PyObject *obj)
Georg Brandl116aa622007-08-15 14:28:22 +000070
Antoine Pitrou550ff722014-09-30 21:56:10 +020071 This utility function prints a warning message to ``sys.stderr`` when an
72 exception has been set but it is impossible for the interpreter to actually
73 raise the exception. It is used, for example, when an exception occurs in an
74 :meth:`__del__` method.
Georg Brandl116aa622007-08-15 14:28:22 +000075
Antoine Pitrou550ff722014-09-30 21:56:10 +020076 The function is called with a single argument *obj* that identifies the context
Martin Panter3263f682016-02-28 03:16:11 +000077 in which the unraisable exception occurred. If possible,
78 the repr of *obj* will be printed in the warning message.
Georg Brandl116aa622007-08-15 14:28:22 +000079
80
Antoine Pitrou550ff722014-09-30 21:56:10 +020081Raising exceptions
82==================
Georg Brandl116aa622007-08-15 14:28:22 +000083
Antoine Pitrou550ff722014-09-30 21:56:10 +020084These functions help you set the current thread's error indicator.
85For convenience, some of these functions will always return a
86NULL pointer for use in a ``return`` statement.
Martin v. Löwisaa2efcb2012-04-19 14:33:43 +020087
88
Georg Brandl60203b42010-10-06 10:11:56 +000089.. c:function:: void PyErr_SetString(PyObject *type, const char *message)
Georg Brandl116aa622007-08-15 14:28:22 +000090
91 This is the most common way to set the error indicator. The first argument
92 specifies the exception type; it is normally one of the standard exceptions,
Georg Brandl60203b42010-10-06 10:11:56 +000093 e.g. :c:data:`PyExc_RuntimeError`. You need not increment its reference count.
Victor Stinner257d38f2010-10-09 10:12:11 +000094 The second argument is an error message; it is decoded from ``'utf-8``'.
Georg Brandl116aa622007-08-15 14:28:22 +000095
96
Georg Brandl60203b42010-10-06 10:11:56 +000097.. c:function:: void PyErr_SetObject(PyObject *type, PyObject *value)
Georg Brandl116aa622007-08-15 14:28:22 +000098
Georg Brandl60203b42010-10-06 10:11:56 +000099 This function is similar to :c:func:`PyErr_SetString` but lets you specify an
Georg Brandl116aa622007-08-15 14:28:22 +0000100 arbitrary Python object for the "value" of the exception.
101
102
Georg Brandl60203b42010-10-06 10:11:56 +0000103.. c:function:: PyObject* PyErr_Format(PyObject *exception, const char *format, ...)
Georg Brandl116aa622007-08-15 14:28:22 +0000104
Antoine Pitroua66e0292010-11-27 20:40:43 +0000105 This function sets the error indicator and returns *NULL*. *exception*
106 should be a Python exception class. The *format* and subsequent
107 parameters help format the error message; they have the same meaning and
Victor Stinnerb1dbd102010-12-28 11:02:46 +0000108 values as in :c:func:`PyUnicode_FromFormat`. *format* is an ASCII-encoded
Victor Stinner555a24f2010-12-27 01:49:26 +0000109 string.
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +0000110
Georg Brandl116aa622007-08-15 14:28:22 +0000111
Antoine Pitrou0676a402014-09-30 21:16:27 +0200112.. c:function:: PyObject* PyErr_FormatV(PyObject *exception, const char *format, va_list vargs)
113
Georg Brandl93a56cd2014-10-30 22:25:41 +0100114 Same as :c:func:`PyErr_Format`, but taking a :c:type:`va_list` argument rather
Antoine Pitrou0676a402014-09-30 21:16:27 +0200115 than a variable number of arguments.
116
117 .. versionadded:: 3.5
118
119
Georg Brandl60203b42010-10-06 10:11:56 +0000120.. c:function:: void PyErr_SetNone(PyObject *type)
Georg Brandl116aa622007-08-15 14:28:22 +0000121
122 This is a shorthand for ``PyErr_SetObject(type, Py_None)``.
123
124
Georg Brandl60203b42010-10-06 10:11:56 +0000125.. c:function:: int PyErr_BadArgument()
Georg Brandl116aa622007-08-15 14:28:22 +0000126
127 This is a shorthand for ``PyErr_SetString(PyExc_TypeError, message)``, where
128 *message* indicates that a built-in operation was invoked with an illegal
129 argument. It is mostly for internal use.
130
131
Georg Brandl60203b42010-10-06 10:11:56 +0000132.. c:function:: PyObject* PyErr_NoMemory()
Georg Brandl116aa622007-08-15 14:28:22 +0000133
134 This is a shorthand for ``PyErr_SetNone(PyExc_MemoryError)``; it returns *NULL*
135 so an object allocation function can write ``return PyErr_NoMemory();`` when it
136 runs out of memory.
137
138
Georg Brandl60203b42010-10-06 10:11:56 +0000139.. c:function:: PyObject* PyErr_SetFromErrno(PyObject *type)
Georg Brandl116aa622007-08-15 14:28:22 +0000140
141 .. index:: single: strerror()
142
143 This is a convenience function to raise an exception when a C library function
Georg Brandl60203b42010-10-06 10:11:56 +0000144 has returned an error and set the C variable :c:data:`errno`. It constructs a
145 tuple object whose first item is the integer :c:data:`errno` value and whose
146 second item is the corresponding error message (gotten from :c:func:`strerror`),
Georg Brandl116aa622007-08-15 14:28:22 +0000147 and then calls ``PyErr_SetObject(type, object)``. On Unix, when the
Georg Brandl60203b42010-10-06 10:11:56 +0000148 :c:data:`errno` value is :const:`EINTR`, indicating an interrupted system call,
149 this calls :c:func:`PyErr_CheckSignals`, and if that set the error indicator,
Georg Brandl116aa622007-08-15 14:28:22 +0000150 leaves it set to that. The function always returns *NULL*, so a wrapper
151 function around a system call can write ``return PyErr_SetFromErrno(type);``
152 when the system call returns an error.
153
154
Georg Brandl991fc572013-04-14 11:12:16 +0200155.. c:function:: PyObject* PyErr_SetFromErrnoWithFilenameObject(PyObject *type, PyObject *filenameObject)
Georg Brandl116aa622007-08-15 14:28:22 +0000156
Georg Brandl60203b42010-10-06 10:11:56 +0000157 Similar to :c:func:`PyErr_SetFromErrno`, with the additional behavior that if
Georg Brandl991fc572013-04-14 11:12:16 +0200158 *filenameObject* is not *NULL*, it is passed to the constructor of *type* as
Andrew Svetlov08af0002014-04-01 01:13:30 +0300159 a third parameter. In the case of :exc:`OSError` exception,
160 this is used to define the :attr:`filename` attribute of the
Georg Brandl991fc572013-04-14 11:12:16 +0200161 exception instance.
162
163
Larry Hastingsb0827312014-02-09 22:05:19 -0800164.. c:function:: PyObject* PyErr_SetFromErrnoWithFilenameObjects(PyObject *type, PyObject *filenameObject, PyObject *filenameObject2)
165
166 Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but takes a second
167 filename object, for raising errors when a function that takes two filenames
168 fails.
169
Georg Brandldf48b972014-03-24 09:06:18 +0100170 .. versionadded:: 3.4
Larry Hastingsb0827312014-02-09 22:05:19 -0800171
172
Georg Brandl991fc572013-04-14 11:12:16 +0200173.. c:function:: PyObject* PyErr_SetFromErrnoWithFilename(PyObject *type, const char *filename)
174
175 Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but the filename
176 is given as a C string. *filename* is decoded from the filesystem encoding
Victor Stinner14e461d2013-08-26 22:28:21 +0200177 (:func:`os.fsdecode`).
Georg Brandl116aa622007-08-15 14:28:22 +0000178
179
Georg Brandl60203b42010-10-06 10:11:56 +0000180.. c:function:: PyObject* PyErr_SetFromWindowsErr(int ierr)
Georg Brandl116aa622007-08-15 14:28:22 +0000181
182 This is a convenience function to raise :exc:`WindowsError`. If called with
Georg Brandl60203b42010-10-06 10:11:56 +0000183 *ierr* of :c:data:`0`, the error code returned by a call to :c:func:`GetLastError`
184 is used instead. It calls the Win32 function :c:func:`FormatMessage` to retrieve
185 the Windows description of error code given by *ierr* or :c:func:`GetLastError`,
Georg Brandl116aa622007-08-15 14:28:22 +0000186 then it constructs a tuple object whose first item is the *ierr* value and whose
187 second item is the corresponding error message (gotten from
Georg Brandl60203b42010-10-06 10:11:56 +0000188 :c:func:`FormatMessage`), and then calls ``PyErr_SetObject(PyExc_WindowsError,
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400189 object)``. This function always returns *NULL*.
190
191 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000192
193
Georg Brandl60203b42010-10-06 10:11:56 +0000194.. c:function:: PyObject* PyErr_SetExcFromWindowsErr(PyObject *type, int ierr)
Georg Brandl116aa622007-08-15 14:28:22 +0000195
Georg Brandl60203b42010-10-06 10:11:56 +0000196 Similar to :c:func:`PyErr_SetFromWindowsErr`, with an additional parameter
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400197 specifying the exception type to be raised.
198
199 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000200
Georg Brandl116aa622007-08-15 14:28:22 +0000201
Georg Brandl60203b42010-10-06 10:11:56 +0000202.. c:function:: PyObject* PyErr_SetFromWindowsErrWithFilename(int ierr, const char *filename)
Georg Brandl116aa622007-08-15 14:28:22 +0000203
Georg Brandl991fc572013-04-14 11:12:16 +0200204 Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, but the
205 filename is given as a C string. *filename* is decoded from the filesystem
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400206 encoding (:func:`os.fsdecode`).
207
208 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000209
210
Georg Brandl991fc572013-04-14 11:12:16 +0200211.. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilenameObject(PyObject *type, int ierr, PyObject *filename)
212
213 Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, with an
214 additional parameter specifying the exception type to be raised.
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400215
216 .. availability:: Windows.
Georg Brandl991fc572013-04-14 11:12:16 +0200217
218
Larry Hastingsb0827312014-02-09 22:05:19 -0800219.. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilenameObjects(PyObject *type, int ierr, PyObject *filename, PyObject *filename2)
220
221 Similar to :c:func:`PyErr_SetExcFromWindowsErrWithFilenameObject`,
222 but accepts a second filename object.
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400223
224 .. availability:: Windows.
Larry Hastingsb0827312014-02-09 22:05:19 -0800225
Georg Brandldf48b972014-03-24 09:06:18 +0100226 .. versionadded:: 3.4
Larry Hastingsb0827312014-02-09 22:05:19 -0800227
228
Georg Brandl991fc572013-04-14 11:12:16 +0200229.. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, const char *filename)
Georg Brandl116aa622007-08-15 14:28:22 +0000230
Georg Brandl60203b42010-10-06 10:11:56 +0000231 Similar to :c:func:`PyErr_SetFromWindowsErrWithFilename`, with an additional
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400232 parameter specifying the exception type to be raised.
233
234 .. availability:: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000235
Georg Brandlf4095832012-04-24 19:16:24 +0200236
Brian Curtin09b86d12012-04-17 16:57:09 -0500237.. c:function:: PyObject* PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
Brian Curtinbd439742012-04-16 15:14:36 -0500238
239 This is a convenience function to raise :exc:`ImportError`. *msg* will be
Brian Curtin09b86d12012-04-17 16:57:09 -0500240 set as the exception's message string. *name* and *path*, both of which can
241 be ``NULL``, will be set as the :exc:`ImportError`'s respective ``name``
242 and ``path`` attributes.
Brian Curtinbd439742012-04-16 15:14:36 -0500243
Brian Curtinbded8942012-04-16 18:14:09 -0500244 .. versionadded:: 3.3
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Georg Brandlf4095832012-04-24 19:16:24 +0200246
Victor Stinner14e461d2013-08-26 22:28:21 +0200247.. c:function:: void PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
Benjamin Peterson2c539712010-09-20 22:42:10 +0000248
249 Set file, line, and offset information for the current exception. If the
250 current exception is not a :exc:`SyntaxError`, then it sets additional
251 attributes, which make the exception printing subsystem think the exception
Victor Stinner14e461d2013-08-26 22:28:21 +0200252 is a :exc:`SyntaxError`.
Benjamin Peterson2c539712010-09-20 22:42:10 +0000253
Georg Brandldf48b972014-03-24 09:06:18 +0100254 .. versionadded:: 3.4
Victor Stinner14e461d2013-08-26 22:28:21 +0200255
256
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300257.. c:function:: void PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
Victor Stinner14e461d2013-08-26 22:28:21 +0200258
259 Like :c:func:`PyErr_SyntaxLocationObject`, but *filename* is a byte string
260 decoded from the filesystem encoding (:func:`os.fsdecode`).
261
Georg Brandldf48b972014-03-24 09:06:18 +0100262 .. versionadded:: 3.2
Benjamin Petersonb5d23b42010-09-21 21:29:26 +0000263
Benjamin Peterson2c539712010-09-20 22:42:10 +0000264
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300265.. c:function:: void PyErr_SyntaxLocation(const char *filename, int lineno)
Benjamin Peterson2c539712010-09-20 22:42:10 +0000266
Victor Stinner14e461d2013-08-26 22:28:21 +0200267 Like :c:func:`PyErr_SyntaxLocationEx`, but the col_offset parameter is
Benjamin Peterson2c539712010-09-20 22:42:10 +0000268 omitted.
269
270
Georg Brandl60203b42010-10-06 10:11:56 +0000271.. c:function:: void PyErr_BadInternalCall()
Georg Brandl116aa622007-08-15 14:28:22 +0000272
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000273 This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``,
274 where *message* indicates that an internal operation (e.g. a Python/C API
275 function) was invoked with an illegal argument. It is mostly for internal
276 use.
Georg Brandl116aa622007-08-15 14:28:22 +0000277
278
Antoine Pitrou550ff722014-09-30 21:56:10 +0200279Issuing warnings
280================
281
282Use these functions to issue warnings from C code. They mirror similar
283functions exported by the Python :mod:`warnings` module. They normally
284print a warning message to *sys.stderr*; however, it is
285also possible that the user has specified that warnings are to be turned into
286errors, and in that case they will raise an exception. It is also possible that
287the functions raise an exception because of a problem with the warning machinery.
288The return value is ``0`` if no exception is raised, or ``-1`` if an exception
289is raised. (It is not possible to determine whether a warning message is
290actually printed, nor what the reason is for the exception; this is
291intentional.) If an exception is raised, the caller should do its normal
292exception handling (for example, :c:func:`Py_DECREF` owned references and return
293an error value).
294
Georg Brandl97435162014-10-06 12:58:00 +0200295.. c:function:: int PyErr_WarnEx(PyObject *category, const char *message, Py_ssize_t stack_level)
Georg Brandl116aa622007-08-15 14:28:22 +0000296
297 Issue a warning message. The *category* argument is a warning category (see
Martin Panter6245cb32016-04-15 02:14:19 +0000298 below) or *NULL*; the *message* argument is a UTF-8 encoded string. *stack_level* is a
Georg Brandl116aa622007-08-15 14:28:22 +0000299 positive number giving a number of stack frames; the warning will be issued from
Victor Stinner4a2b7a12010-08-13 14:03:48 +0000300 the currently executing line of code in that stack frame. A *stack_level* of 1
Georg Brandl60203b42010-10-06 10:11:56 +0000301 is the function calling :c:func:`PyErr_WarnEx`, 2 is the function above that,
Georg Brandl116aa622007-08-15 14:28:22 +0000302 and so forth.
303
cocoatomoeaeda642017-04-15 11:06:02 +0900304 Warning categories must be subclasses of :c:data:`PyExc_Warning`;
305 :c:data:`PyExc_Warning` is a subclass of :c:data:`PyExc_Exception`;
306 the default warning category is :c:data:`PyExc_RuntimeWarning`. The standard
307 Python warning categories are available as global variables whose names are
delirious-lettuce3378b202017-05-19 14:37:57 -0600308 enumerated at :ref:`standardwarningcategories`.
Georg Brandl116aa622007-08-15 14:28:22 +0000309
310 For information about warning control, see the documentation for the
311 :mod:`warnings` module and the :option:`-W` option in the command line
312 documentation. There is no C API for warning control.
313
Eric Snow46f97b82016-09-07 16:56:15 -0700314.. c:function:: PyObject* PyErr_SetImportErrorSubclass(PyObject *msg, PyObject *name, PyObject *path)
315
316 Much like :c:func:`PyErr_SetImportError` but this function allows for
317 specifying a subclass of :exc:`ImportError` to raise.
318
Yury Selivanov3479b5f2016-11-10 13:25:26 -0500319 .. versionadded:: 3.6
Eric Snow46f97b82016-09-07 16:56:15 -0700320
Georg Brandl116aa622007-08-15 14:28:22 +0000321
Victor Stinner14e461d2013-08-26 22:28:21 +0200322.. c:function:: int PyErr_WarnExplicitObject(PyObject *category, PyObject *message, PyObject *filename, int lineno, PyObject *module, PyObject *registry)
Georg Brandl116aa622007-08-15 14:28:22 +0000323
324 Issue a warning message with explicit control over all warning attributes. This
325 is a straightforward wrapper around the Python function
326 :func:`warnings.warn_explicit`, see there for more information. The *module*
327 and *registry* arguments may be set to *NULL* to get the default effect
Victor Stinner14e461d2013-08-26 22:28:21 +0200328 described there.
329
330 .. versionadded:: 3.4
331
332
333.. c:function:: int PyErr_WarnExplicit(PyObject *category, const char *message, const char *filename, int lineno, const char *module, PyObject *registry)
334
335 Similar to :c:func:`PyErr_WarnExplicitObject` except that *message* and
336 *module* are UTF-8 encoded strings, and *filename* is decoded from the
337 filesystem encoding (:func:`os.fsdecode`).
Georg Brandl116aa622007-08-15 14:28:22 +0000338
339
Georg Brandl60203b42010-10-06 10:11:56 +0000340.. c:function:: int PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level, const char *format, ...)
Victor Stinner4a2b7a12010-08-13 14:03:48 +0000341
Georg Brandl60203b42010-10-06 10:11:56 +0000342 Function similar to :c:func:`PyErr_WarnEx`, but use
Victor Stinner555a24f2010-12-27 01:49:26 +0000343 :c:func:`PyUnicode_FromFormat` to format the warning message. *format* is
344 an ASCII-encoded string.
Victor Stinner4a2b7a12010-08-13 14:03:48 +0000345
346 .. versionadded:: 3.2
347
Georg Brandlf4095832012-04-24 19:16:24 +0200348
Victor Stinner914cde82016-03-19 01:03:51 +0100349.. c:function:: int PyErr_ResourceWarning(PyObject *source, Py_ssize_t stack_level, const char *format, ...)
350
351 Function similar to :c:func:`PyErr_WarnFormat`, but *category* is
352 :exc:`ResourceWarning` and pass *source* to :func:`warnings.WarningMessage`.
353
354 .. versionadded:: 3.6
355
356
Antoine Pitrou550ff722014-09-30 21:56:10 +0200357Querying the error indicator
358============================
359
360.. c:function:: PyObject* PyErr_Occurred()
361
362 Test whether the error indicator is set. If set, return the exception *type*
363 (the first argument to the last call to one of the :c:func:`PyErr_Set\*`
364 functions or to :c:func:`PyErr_Restore`). If not set, return *NULL*. You do not
365 own a reference to the return value, so you do not need to :c:func:`Py_DECREF`
366 it.
367
368 .. note::
369
370 Do not compare the return value to a specific exception; use
371 :c:func:`PyErr_ExceptionMatches` instead, shown below. (The comparison could
372 easily fail since the exception may be an instance instead of a class, in the
Benjamin Peterson610bc6a2015-01-13 09:20:31 -0500373 case of a class exception, or it may be a subclass of the expected exception.)
Antoine Pitrou550ff722014-09-30 21:56:10 +0200374
375
376.. c:function:: int PyErr_ExceptionMatches(PyObject *exc)
377
378 Equivalent to ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``. This
379 should only be called when an exception is actually set; a memory access
380 violation will occur if no exception has been raised.
381
382
383.. c:function:: int PyErr_GivenExceptionMatches(PyObject *given, PyObject *exc)
384
385 Return true if the *given* exception matches the exception type in *exc*. If
386 *exc* is a class object, this also returns true when *given* is an instance
387 of a subclass. If *exc* is a tuple, all exception types in the tuple (and
388 recursively in subtuples) are searched for a match.
389
390
391.. c:function:: void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
392
393 Retrieve the error indicator into three variables whose addresses are passed.
394 If the error indicator is not set, set all three variables to *NULL*. If it is
395 set, it will be cleared and you own a reference to each object retrieved. The
396 value and traceback object may be *NULL* even when the type object is not.
397
398 .. note::
399
400 This function is normally only used by code that needs to catch exceptions or
401 by code that needs to save and restore the error indicator temporarily, e.g.::
402
403 {
Serhiy Storchaka4398c122016-12-25 16:22:23 +0200404 PyObject *type, *value, *traceback;
Antoine Pitrou550ff722014-09-30 21:56:10 +0200405 PyErr_Fetch(&type, &value, &traceback);
406
407 /* ... code that might produce other errors ... */
408
409 PyErr_Restore(type, value, traceback);
410 }
411
412
413.. c:function:: void PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
414
415 Set the error indicator from the three objects. If the error indicator is
416 already set, it is cleared first. If the objects are *NULL*, the error
417 indicator is cleared. Do not pass a *NULL* type and non-*NULL* value or
418 traceback. The exception type should be a class. Do not pass an invalid
419 exception type or value. (Violating these rules will cause subtle problems
420 later.) This call takes away a reference to each object: you must own a
421 reference to each object before the call and after the call you no longer own
422 these references. (If you don't understand this, don't use this function. I
423 warned you.)
424
425 .. note::
426
427 This function is normally only used by code that needs to save and restore the
428 error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the current
429 error indicator.
430
431
432.. c:function:: void PyErr_NormalizeException(PyObject**exc, PyObject**val, PyObject**tb)
433
434 Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` below
435 can be "unnormalized", meaning that ``*exc`` is a class object but ``*val`` is
436 not an instance of the same class. This function can be used to instantiate
437 the class in that case. If the values are already normalized, nothing happens.
438 The delayed normalization is implemented to improve performance.
439
440 .. note::
441
442 This function *does not* implicitly set the ``__traceback__``
443 attribute on the exception value. If setting the traceback
444 appropriately is desired, the following additional snippet is needed::
445
446 if (tb != NULL) {
447 PyException_SetTraceback(val, tb);
448 }
449
450
451.. c:function:: void PyErr_GetExcInfo(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
452
453 Retrieve the exception info, as known from ``sys.exc_info()``. This refers
454 to an exception that was *already caught*, not to an exception that was
455 freshly raised. Returns new references for the three objects, any of which
456 may be *NULL*. Does not modify the exception info state.
457
458 .. note::
459
460 This function is not normally used by code that wants to handle exceptions.
461 Rather, it can be used when code needs to save and restore the exception
462 state temporarily. Use :c:func:`PyErr_SetExcInfo` to restore or clear the
463 exception state.
464
465 .. versionadded:: 3.3
466
467
468.. c:function:: void PyErr_SetExcInfo(PyObject *type, PyObject *value, PyObject *traceback)
469
470 Set the exception info, as known from ``sys.exc_info()``. This refers
471 to an exception that was *already caught*, not to an exception that was
472 freshly raised. This function steals the references of the arguments.
473 To clear the exception state, pass *NULL* for all three arguments.
474 For general rules about the three arguments, see :c:func:`PyErr_Restore`.
475
476 .. note::
477
478 This function is not normally used by code that wants to handle exceptions.
479 Rather, it can be used when code needs to save and restore the exception
480 state temporarily. Use :c:func:`PyErr_GetExcInfo` to read the exception
481 state.
482
483 .. versionadded:: 3.3
484
485
486Signal Handling
487===============
488
489
Georg Brandl60203b42010-10-06 10:11:56 +0000490.. c:function:: int PyErr_CheckSignals()
Georg Brandl116aa622007-08-15 14:28:22 +0000491
492 .. index::
493 module: signal
494 single: SIGINT
495 single: KeyboardInterrupt (built-in exception)
496
497 This function interacts with Python's signal handling. It checks whether a
498 signal has been sent to the processes and if so, invokes the corresponding
499 signal handler. If the :mod:`signal` module is supported, this can invoke a
500 signal handler written in Python. In all cases, the default effect for
501 :const:`SIGINT` is to raise the :exc:`KeyboardInterrupt` exception. If an
502 exception is raised the error indicator is set and the function returns ``-1``;
503 otherwise the function returns ``0``. The error indicator may or may not be
504 cleared if it was previously set.
505
506
Georg Brandl60203b42010-10-06 10:11:56 +0000507.. c:function:: void PyErr_SetInterrupt()
Georg Brandl116aa622007-08-15 14:28:22 +0000508
509 .. index::
510 single: SIGINT
511 single: KeyboardInterrupt (built-in exception)
512
513 This function simulates the effect of a :const:`SIGINT` signal arriving --- the
Georg Brandl60203b42010-10-06 10:11:56 +0000514 next time :c:func:`PyErr_CheckSignals` is called, :exc:`KeyboardInterrupt` will
Georg Brandl116aa622007-08-15 14:28:22 +0000515 be raised. It may be called without holding the interpreter lock.
516
517 .. % XXX This was described as obsolete, but is used in
Georg Brandl2067bfd2008-05-25 13:05:15 +0000518 .. % _thread.interrupt_main() (used from IDLE), so it's still needed.
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520
Georg Brandl60203b42010-10-06 10:11:56 +0000521.. c:function:: int PySignal_SetWakeupFd(int fd)
Christian Heimes5fb7c2a2007-12-24 08:52:31 +0000522
Victor Stinner11517102014-07-29 23:31:34 +0200523 This utility function specifies a file descriptor to which the signal number
524 is written as a single byte whenever a signal is received. *fd* must be
525 non-blocking. It returns the previous such file descriptor.
526
527 The value ``-1`` disables the feature; this is the initial state.
Christian Heimes5fb7c2a2007-12-24 08:52:31 +0000528 This is equivalent to :func:`signal.set_wakeup_fd` in Python, but without any
529 error checking. *fd* should be a valid file descriptor. The function should
530 only be called from the main thread.
531
Victor Stinner11517102014-07-29 23:31:34 +0200532 .. versionchanged:: 3.5
533 On Windows, the function now also supports socket handles.
534
Christian Heimes5fb7c2a2007-12-24 08:52:31 +0000535
Antoine Pitrou550ff722014-09-30 21:56:10 +0200536Exception Classes
537=================
538
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300539.. c:function:: PyObject* PyErr_NewException(const char *name, PyObject *base, PyObject *dict)
Georg Brandl116aa622007-08-15 14:28:22 +0000540
Georg Brandl325eb472011-07-13 15:59:24 +0200541 This utility function creates and returns a new exception class. The *name*
Georg Brandl116aa622007-08-15 14:28:22 +0000542 argument must be the name of the new exception, a C string of the form
Georg Brandl325eb472011-07-13 15:59:24 +0200543 ``module.classname``. The *base* and *dict* arguments are normally *NULL*.
544 This creates a class object derived from :exc:`Exception` (accessible in C as
Georg Brandl60203b42010-10-06 10:11:56 +0000545 :c:data:`PyExc_Exception`).
Georg Brandl116aa622007-08-15 14:28:22 +0000546
547 The :attr:`__module__` attribute of the new class is set to the first part (up
548 to the last dot) of the *name* argument, and the class name is set to the last
549 part (after the last dot). The *base* argument can be used to specify alternate
550 base classes; it can either be only one class or a tuple of classes. The *dict*
551 argument can be used to specify a dictionary of class variables and methods.
552
553
Serhiy Storchaka03863d22015-06-21 17:11:21 +0300554.. c:function:: PyObject* PyErr_NewExceptionWithDoc(const char *name, const char *doc, PyObject *base, PyObject *dict)
Georg Brandl1e28a272009-12-28 08:41:01 +0000555
Georg Brandl60203b42010-10-06 10:11:56 +0000556 Same as :c:func:`PyErr_NewException`, except that the new exception class can
Georg Brandl1e28a272009-12-28 08:41:01 +0000557 easily be given a docstring: If *doc* is non-*NULL*, it will be used as the
558 docstring for the exception class.
559
560 .. versionadded:: 3.2
561
562
Georg Brandlab6f2f62009-03-31 04:16:10 +0000563Exception Objects
564=================
565
Georg Brandl60203b42010-10-06 10:11:56 +0000566.. c:function:: PyObject* PyException_GetTraceback(PyObject *ex)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000567
568 Return the traceback associated with the exception as a new reference, as
569 accessible from Python through :attr:`__traceback__`. If there is no
570 traceback associated, this returns *NULL*.
571
572
Georg Brandl60203b42010-10-06 10:11:56 +0000573.. c:function:: int PyException_SetTraceback(PyObject *ex, PyObject *tb)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000574
575 Set the traceback associated with the exception to *tb*. Use ``Py_None`` to
576 clear it.
577
578
Georg Brandl60203b42010-10-06 10:11:56 +0000579.. c:function:: PyObject* PyException_GetContext(PyObject *ex)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000580
581 Return the context (another exception instance during whose handling *ex* was
582 raised) associated with the exception as a new reference, as accessible from
583 Python through :attr:`__context__`. If there is no context associated, this
584 returns *NULL*.
585
586
Georg Brandl60203b42010-10-06 10:11:56 +0000587.. c:function:: void PyException_SetContext(PyObject *ex, PyObject *ctx)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000588
589 Set the context associated with the exception to *ctx*. Use *NULL* to clear
590 it. There is no type check to make sure that *ctx* is an exception instance.
591 This steals a reference to *ctx*.
592
593
Georg Brandl60203b42010-10-06 10:11:56 +0000594.. c:function:: PyObject* PyException_GetCause(PyObject *ex)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000595
Nick Coghlanab7bf212012-02-26 17:49:52 +1000596 Return the cause (either an exception instance, or :const:`None`,
597 set by ``raise ... from ...``) associated with the exception as a new
598 reference, as accessible from Python through :attr:`__cause__`.
599
Georg Brandlab6f2f62009-03-31 04:16:10 +0000600
Larry Hastings3732ed22014-03-15 21:13:56 -0700601.. c:function:: void PyException_SetCause(PyObject *ex, PyObject *cause)
Georg Brandlab6f2f62009-03-31 04:16:10 +0000602
Larry Hastings3732ed22014-03-15 21:13:56 -0700603 Set the cause associated with the exception to *cause*. Use *NULL* to clear
604 it. There is no type check to make sure that *cause* is either an exception
605 instance or :const:`None`. This steals a reference to *cause*.
Nick Coghlanab7bf212012-02-26 17:49:52 +1000606
Benjamin Petersond5a1c442012-05-14 22:09:31 -0700607 :attr:`__suppress_context__` is implicitly set to ``True`` by this function.
Georg Brandlab6f2f62009-03-31 04:16:10 +0000608
609
Georg Brandl5a932652010-11-23 07:54:19 +0000610.. _unicodeexceptions:
611
612Unicode Exception Objects
613=========================
614
615The following functions are used to create and modify Unicode exceptions from C.
616
617.. c:function:: PyObject* PyUnicodeDecodeError_Create(const char *encoding, const char *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
618
619 Create a :class:`UnicodeDecodeError` object with the attributes *encoding*,
Victor Stinner555a24f2010-12-27 01:49:26 +0000620 *object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are
621 UTF-8 encoded strings.
Georg Brandl5a932652010-11-23 07:54:19 +0000622
623.. c:function:: PyObject* PyUnicodeEncodeError_Create(const char *encoding, const Py_UNICODE *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
624
625 Create a :class:`UnicodeEncodeError` object with the attributes *encoding*,
Victor Stinner555a24f2010-12-27 01:49:26 +0000626 *object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are
627 UTF-8 encoded strings.
Georg Brandl5a932652010-11-23 07:54:19 +0000628
629.. c:function:: PyObject* PyUnicodeTranslateError_Create(const Py_UNICODE *object, Py_ssize_t length, Py_ssize_t start, Py_ssize_t end, const char *reason)
630
631 Create a :class:`UnicodeTranslateError` object with the attributes *object*,
Martin Panter6245cb32016-04-15 02:14:19 +0000632 *length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string.
Georg Brandl5a932652010-11-23 07:54:19 +0000633
634.. c:function:: PyObject* PyUnicodeDecodeError_GetEncoding(PyObject *exc)
635 PyObject* PyUnicodeEncodeError_GetEncoding(PyObject *exc)
636
637 Return the *encoding* attribute of the given exception object.
638
639.. c:function:: PyObject* PyUnicodeDecodeError_GetObject(PyObject *exc)
640 PyObject* PyUnicodeEncodeError_GetObject(PyObject *exc)
641 PyObject* PyUnicodeTranslateError_GetObject(PyObject *exc)
642
643 Return the *object* attribute of the given exception object.
644
645.. c:function:: int PyUnicodeDecodeError_GetStart(PyObject *exc, Py_ssize_t *start)
646 int PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
647 int PyUnicodeTranslateError_GetStart(PyObject *exc, Py_ssize_t *start)
648
649 Get the *start* attribute of the given exception object and place it into
650 *\*start*. *start* must not be *NULL*. Return ``0`` on success, ``-1`` on
651 failure.
652
653.. c:function:: int PyUnicodeDecodeError_SetStart(PyObject *exc, Py_ssize_t start)
654 int PyUnicodeEncodeError_SetStart(PyObject *exc, Py_ssize_t start)
655 int PyUnicodeTranslateError_SetStart(PyObject *exc, Py_ssize_t start)
656
657 Set the *start* attribute of the given exception object to *start*. Return
658 ``0`` on success, ``-1`` on failure.
659
660.. c:function:: int PyUnicodeDecodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
661 int PyUnicodeEncodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
662 int PyUnicodeTranslateError_GetEnd(PyObject *exc, Py_ssize_t *end)
663
664 Get the *end* attribute of the given exception object and place it into
665 *\*end*. *end* must not be *NULL*. Return ``0`` on success, ``-1`` on
666 failure.
667
668.. c:function:: int PyUnicodeDecodeError_SetEnd(PyObject *exc, Py_ssize_t end)
669 int PyUnicodeEncodeError_SetEnd(PyObject *exc, Py_ssize_t end)
670 int PyUnicodeTranslateError_SetEnd(PyObject *exc, Py_ssize_t end)
671
672 Set the *end* attribute of the given exception object to *end*. Return ``0``
673 on success, ``-1`` on failure.
674
675.. c:function:: PyObject* PyUnicodeDecodeError_GetReason(PyObject *exc)
676 PyObject* PyUnicodeEncodeError_GetReason(PyObject *exc)
677 PyObject* PyUnicodeTranslateError_GetReason(PyObject *exc)
678
679 Return the *reason* attribute of the given exception object.
680
681.. c:function:: int PyUnicodeDecodeError_SetReason(PyObject *exc, const char *reason)
682 int PyUnicodeEncodeError_SetReason(PyObject *exc, const char *reason)
683 int PyUnicodeTranslateError_SetReason(PyObject *exc, const char *reason)
684
685 Set the *reason* attribute of the given exception object to *reason*. Return
686 ``0`` on success, ``-1`` on failure.
687
688
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000689Recursion Control
690=================
691
692These two functions provide a way to perform safe recursive calls at the C
693level, both in the core and in extension modules. They are needed if the
694recursive code does not necessarily invoke Python code (which tracks its
695recursion depth automatically).
696
Serhiy Storchaka5fa22fc2015-06-21 16:26:28 +0300697.. c:function:: int Py_EnterRecursiveCall(const char *where)
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000698
699 Marks a point where a recursive C-level call is about to be performed.
700
Ezio Melottif1064492011-10-19 11:06:26 +0300701 If :const:`USE_STACKCHECK` is defined, this function checks if the OS
Georg Brandl60203b42010-10-06 10:11:56 +0000702 stack overflowed using :c:func:`PyOS_CheckStack`. In this is the case, it
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000703 sets a :exc:`MemoryError` and returns a nonzero value.
704
705 The function then checks if the recursion limit is reached. If this is the
Yury Selivanovf488fb42015-07-03 01:04:23 -0400706 case, a :exc:`RecursionError` is set and a nonzero value is returned.
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000707 Otherwise, zero is returned.
708
709 *where* should be a string such as ``" in instance check"`` to be
Yury Selivanovf488fb42015-07-03 01:04:23 -0400710 concatenated to the :exc:`RecursionError` message caused by the recursion
711 depth limit.
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000712
Georg Brandl60203b42010-10-06 10:11:56 +0000713.. c:function:: void Py_LeaveRecursiveCall()
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000714
Georg Brandl60203b42010-10-06 10:11:56 +0000715 Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each
716 *successful* invocation of :c:func:`Py_EnterRecursiveCall`.
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000717
Antoine Pitrou39668f52013-08-01 21:12:45 +0200718Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types requires
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000719special recursion handling. In addition to protecting the stack,
Antoine Pitrou39668f52013-08-01 21:12:45 +0200720:c:member:`~PyTypeObject.tp_repr` also needs to track objects to prevent cycles. The
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000721following two functions facilitate this functionality. Effectively,
722these are the C equivalent to :func:`reprlib.recursive_repr`.
723
Daniel Stutzbachc5895dc2010-12-17 22:28:07 +0000724.. c:function:: int Py_ReprEnter(PyObject *object)
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000725
Antoine Pitrou39668f52013-08-01 21:12:45 +0200726 Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` implementation to
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000727 detect cycles.
728
729 If the object has already been processed, the function returns a
Antoine Pitrou39668f52013-08-01 21:12:45 +0200730 positive integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000731 should return a string object indicating a cycle. As examples,
732 :class:`dict` objects return ``{...}`` and :class:`list` objects
733 return ``[...]``.
734
735 The function will return a negative integer if the recursion limit
Antoine Pitrou39668f52013-08-01 21:12:45 +0200736 is reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation should
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000737 typically return ``NULL``.
738
Antoine Pitrou39668f52013-08-01 21:12:45 +0200739 Otherwise, the function returns zero and the :c:member:`~PyTypeObject.tp_repr`
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000740 implementation can continue normally.
741
742.. c:function:: void Py_ReprLeave(PyObject *object)
743
Daniel Stutzbachc5895dc2010-12-17 22:28:07 +0000744 Ends a :c:func:`Py_ReprEnter`. Must be called once for each
745 invocation of :c:func:`Py_ReprEnter` that returns zero.
Daniel Stutzbach7cb30512010-12-17 16:31:32 +0000746
Georg Brandl93dc9eb2010-03-14 10:56:14 +0000747
Georg Brandl116aa622007-08-15 14:28:22 +0000748.. _standardexceptions:
749
750Standard Exceptions
751===================
752
753All standard Python exceptions are available as global variables whose names are
754``PyExc_`` followed by the Python exception name. These have the type
Georg Brandl60203b42010-10-06 10:11:56 +0000755:c:type:`PyObject\*`; they are all class objects. For completeness, here are all
Georg Brandl116aa622007-08-15 14:28:22 +0000756the variables:
757
cocoatomoe8c76312017-04-02 19:45:40 +0900758.. index::
759 single: PyExc_BaseException
760 single: PyExc_Exception
761 single: PyExc_ArithmeticError
762 single: PyExc_AssertionError
763 single: PyExc_AttributeError
764 single: PyExc_BlockingIOError
765 single: PyExc_BrokenPipeError
766 single: PyExc_BufferError
767 single: PyExc_ChildProcessError
768 single: PyExc_ConnectionAbortedError
769 single: PyExc_ConnectionError
770 single: PyExc_ConnectionRefusedError
771 single: PyExc_ConnectionResetError
772 single: PyExc_EOFError
773 single: PyExc_FileExistsError
774 single: PyExc_FileNotFoundError
775 single: PyExc_FloatingPointError
776 single: PyExc_GeneratorExit
777 single: PyExc_ImportError
778 single: PyExc_IndentationError
779 single: PyExc_IndexError
780 single: PyExc_InterruptedError
781 single: PyExc_IsADirectoryError
782 single: PyExc_KeyError
783 single: PyExc_KeyboardInterrupt
784 single: PyExc_LookupError
785 single: PyExc_MemoryError
786 single: PyExc_ModuleNotFoundError
787 single: PyExc_NameError
788 single: PyExc_NotADirectoryError
789 single: PyExc_NotImplementedError
790 single: PyExc_OSError
791 single: PyExc_OverflowError
792 single: PyExc_PermissionError
793 single: PyExc_ProcessLookupError
794 single: PyExc_RecursionError
795 single: PyExc_ReferenceError
796 single: PyExc_RuntimeError
797 single: PyExc_StopAsyncIteration
798 single: PyExc_StopIteration
799 single: PyExc_SyntaxError
800 single: PyExc_SystemError
801 single: PyExc_SystemExit
802 single: PyExc_TabError
803 single: PyExc_TimeoutError
804 single: PyExc_TypeError
805 single: PyExc_UnboundLocalError
806 single: PyExc_UnicodeDecodeError
807 single: PyExc_UnicodeEncodeError
808 single: PyExc_UnicodeError
809 single: PyExc_UnicodeTranslateError
810 single: PyExc_ValueError
811 single: PyExc_ZeroDivisionError
812
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200813+-----------------------------------------+---------------------------------+----------+
814| C Name | Python Name | Notes |
815+=========================================+=================================+==========+
816| :c:data:`PyExc_BaseException` | :exc:`BaseException` | \(1) |
817+-----------------------------------------+---------------------------------+----------+
818| :c:data:`PyExc_Exception` | :exc:`Exception` | \(1) |
819+-----------------------------------------+---------------------------------+----------+
820| :c:data:`PyExc_ArithmeticError` | :exc:`ArithmeticError` | \(1) |
821+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200822| :c:data:`PyExc_AssertionError` | :exc:`AssertionError` | |
823+-----------------------------------------+---------------------------------+----------+
824| :c:data:`PyExc_AttributeError` | :exc:`AttributeError` | |
825+-----------------------------------------+---------------------------------+----------+
826| :c:data:`PyExc_BlockingIOError` | :exc:`BlockingIOError` | |
827+-----------------------------------------+---------------------------------+----------+
828| :c:data:`PyExc_BrokenPipeError` | :exc:`BrokenPipeError` | |
829+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900830| :c:data:`PyExc_BufferError` | :exc:`BufferError` | |
831+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200832| :c:data:`PyExc_ChildProcessError` | :exc:`ChildProcessError` | |
833+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200834| :c:data:`PyExc_ConnectionAbortedError` | :exc:`ConnectionAbortedError` | |
835+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900836| :c:data:`PyExc_ConnectionError` | :exc:`ConnectionError` | |
837+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200838| :c:data:`PyExc_ConnectionRefusedError` | :exc:`ConnectionRefusedError` | |
839+-----------------------------------------+---------------------------------+----------+
840| :c:data:`PyExc_ConnectionResetError` | :exc:`ConnectionResetError` | |
841+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900842| :c:data:`PyExc_EOFError` | :exc:`EOFError` | |
843+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200844| :c:data:`PyExc_FileExistsError` | :exc:`FileExistsError` | |
845+-----------------------------------------+---------------------------------+----------+
846| :c:data:`PyExc_FileNotFoundError` | :exc:`FileNotFoundError` | |
847+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200848| :c:data:`PyExc_FloatingPointError` | :exc:`FloatingPointError` | |
849+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900850| :c:data:`PyExc_GeneratorExit` | :exc:`GeneratorExit` | |
851+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200852| :c:data:`PyExc_ImportError` | :exc:`ImportError` | |
853+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900854| :c:data:`PyExc_IndentationError` | :exc:`IndentationError` | |
Eric Snowc9432652016-09-07 15:42:32 -0700855+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200856| :c:data:`PyExc_IndexError` | :exc:`IndexError` | |
857+-----------------------------------------+---------------------------------+----------+
858| :c:data:`PyExc_InterruptedError` | :exc:`InterruptedError` | |
859+-----------------------------------------+---------------------------------+----------+
860| :c:data:`PyExc_IsADirectoryError` | :exc:`IsADirectoryError` | |
861+-----------------------------------------+---------------------------------+----------+
862| :c:data:`PyExc_KeyError` | :exc:`KeyError` | |
863+-----------------------------------------+---------------------------------+----------+
864| :c:data:`PyExc_KeyboardInterrupt` | :exc:`KeyboardInterrupt` | |
865+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900866| :c:data:`PyExc_LookupError` | :exc:`LookupError` | \(1) |
867+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200868| :c:data:`PyExc_MemoryError` | :exc:`MemoryError` | |
869+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900870| :c:data:`PyExc_ModuleNotFoundError` | :exc:`ModuleNotFoundError` | |
871+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200872| :c:data:`PyExc_NameError` | :exc:`NameError` | |
873+-----------------------------------------+---------------------------------+----------+
874| :c:data:`PyExc_NotADirectoryError` | :exc:`NotADirectoryError` | |
875+-----------------------------------------+---------------------------------+----------+
876| :c:data:`PyExc_NotImplementedError` | :exc:`NotImplementedError` | |
877+-----------------------------------------+---------------------------------+----------+
878| :c:data:`PyExc_OSError` | :exc:`OSError` | \(1) |
879+-----------------------------------------+---------------------------------+----------+
880| :c:data:`PyExc_OverflowError` | :exc:`OverflowError` | |
881+-----------------------------------------+---------------------------------+----------+
882| :c:data:`PyExc_PermissionError` | :exc:`PermissionError` | |
883+-----------------------------------------+---------------------------------+----------+
884| :c:data:`PyExc_ProcessLookupError` | :exc:`ProcessLookupError` | |
885+-----------------------------------------+---------------------------------+----------+
Yury Selivanovf488fb42015-07-03 01:04:23 -0400886| :c:data:`PyExc_RecursionError` | :exc:`RecursionError` | |
887+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200888| :c:data:`PyExc_ReferenceError` | :exc:`ReferenceError` | \(2) |
889+-----------------------------------------+---------------------------------+----------+
890| :c:data:`PyExc_RuntimeError` | :exc:`RuntimeError` | |
891+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900892| :c:data:`PyExc_StopAsyncIteration` | :exc:`StopAsyncIteration` | |
893+-----------------------------------------+---------------------------------+----------+
894| :c:data:`PyExc_StopIteration` | :exc:`StopIteration` | |
895+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200896| :c:data:`PyExc_SyntaxError` | :exc:`SyntaxError` | |
897+-----------------------------------------+---------------------------------+----------+
898| :c:data:`PyExc_SystemError` | :exc:`SystemError` | |
899+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200900| :c:data:`PyExc_SystemExit` | :exc:`SystemExit` | |
901+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900902| :c:data:`PyExc_TabError` | :exc:`TabError` | |
903+-----------------------------------------+---------------------------------+----------+
904| :c:data:`PyExc_TimeoutError` | :exc:`TimeoutError` | |
905+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200906| :c:data:`PyExc_TypeError` | :exc:`TypeError` | |
907+-----------------------------------------+---------------------------------+----------+
cocoatomoe8c76312017-04-02 19:45:40 +0900908| :c:data:`PyExc_UnboundLocalError` | :exc:`UnboundLocalError` | |
909+-----------------------------------------+---------------------------------+----------+
910| :c:data:`PyExc_UnicodeDecodeError` | :exc:`UnicodeDecodeError` | |
911+-----------------------------------------+---------------------------------+----------+
912| :c:data:`PyExc_UnicodeEncodeError` | :exc:`UnicodeEncodeError` | |
913+-----------------------------------------+---------------------------------+----------+
914| :c:data:`PyExc_UnicodeError` | :exc:`UnicodeError` | |
915+-----------------------------------------+---------------------------------+----------+
916| :c:data:`PyExc_UnicodeTranslateError` | :exc:`UnicodeTranslateError` | |
917+-----------------------------------------+---------------------------------+----------+
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200918| :c:data:`PyExc_ValueError` | :exc:`ValueError` | |
919+-----------------------------------------+---------------------------------+----------+
920| :c:data:`PyExc_ZeroDivisionError` | :exc:`ZeroDivisionError` | |
921+-----------------------------------------+---------------------------------+----------+
922
923.. versionadded:: 3.3
924 :c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`,
925 :c:data:`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`,
926 :c:data:`PyExc_ConnectionAbortedError`, :c:data:`PyExc_ConnectionRefusedError`,
927 :c:data:`PyExc_ConnectionResetError`, :c:data:`PyExc_FileExistsError`,
928 :c:data:`PyExc_FileNotFoundError`, :c:data:`PyExc_InterruptedError`,
929 :c:data:`PyExc_IsADirectoryError`, :c:data:`PyExc_NotADirectoryError`,
930 :c:data:`PyExc_PermissionError`, :c:data:`PyExc_ProcessLookupError`
931 and :c:data:`PyExc_TimeoutError` were introduced following :pep:`3151`.
932
Yury Selivanovf488fb42015-07-03 01:04:23 -0400933.. versionadded:: 3.5
cocoatomoe8c76312017-04-02 19:45:40 +0900934 :c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`.
Yury Selivanovf488fb42015-07-03 01:04:23 -0400935
cocoatomoe8c76312017-04-02 19:45:40 +0900936.. versionadded:: 3.6
937 :c:data:`PyExc_ModuleNotFoundError`.
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200938
939These are compatibility aliases to :c:data:`PyExc_OSError`:
940
cocoatomoe8c76312017-04-02 19:45:40 +0900941.. index::
942 single: PyExc_EnvironmentError
943 single: PyExc_IOError
944 single: PyExc_WindowsError
945
Antoine Pitrou9a4a3422011-10-12 18:28:01 +0200946+-------------------------------------+----------+
947| C Name | Notes |
948+=====================================+==========+
949| :c:data:`PyExc_EnvironmentError` | |
950+-------------------------------------+----------+
951| :c:data:`PyExc_IOError` | |
952+-------------------------------------+----------+
953| :c:data:`PyExc_WindowsError` | \(3) |
954+-------------------------------------+----------+
955
956.. versionchanged:: 3.3
957 These aliases used to be separate exception types.
958
Georg Brandl116aa622007-08-15 14:28:22 +0000959Notes:
960
961(1)
962 This is a base class for other standard exceptions.
963
964(2)
965 This is the same as :exc:`weakref.ReferenceError`.
966
967(3)
968 Only defined on Windows; protect code that uses this by testing that the
969 preprocessor macro ``MS_WINDOWS`` is defined.
cocoatomoe8c76312017-04-02 19:45:40 +0900970
delirious-lettuce3378b202017-05-19 14:37:57 -0600971.. _standardwarningcategories:
cocoatomoeaeda642017-04-15 11:06:02 +0900972
973Standard Warning Categories
974===========================
cocoatomoe8c76312017-04-02 19:45:40 +0900975
976All standard Python warning categories are available as global variables whose
977names are ``PyExc_`` followed by the Python exception name. These have the type
978:c:type:`PyObject\*`; they are all class objects. For completeness, here are all
979the variables:
980
981.. index::
982 single: PyExc_Warning
983 single: PyExc_BytesWarning
delirious-lettuce3378b202017-05-19 14:37:57 -0600984 single: PyExc_DeprecationWarning
cocoatomoe8c76312017-04-02 19:45:40 +0900985 single: PyExc_FutureWarning
986 single: PyExc_ImportWarning
987 single: PyExc_PendingDeprecationWarning
988 single: PyExc_ResourceWarning
989 single: PyExc_RuntimeWarning
990 single: PyExc_SyntaxWarning
991 single: PyExc_UnicodeWarning
992 single: PyExc_UserWarning
993
994+------------------------------------------+---------------------------------+----------+
995| C Name | Python Name | Notes |
996+==========================================+=================================+==========+
997| :c:data:`PyExc_Warning` | :exc:`Warning` | \(1) |
998+------------------------------------------+---------------------------------+----------+
999| :c:data:`PyExc_BytesWarning` | :exc:`BytesWarning` | |
1000+------------------------------------------+---------------------------------+----------+
1001| :c:data:`PyExc_DeprecationWarning` | :exc:`DeprecationWarning` | |
1002+------------------------------------------+---------------------------------+----------+
1003| :c:data:`PyExc_FutureWarning` | :exc:`FutureWarning` | |
1004+------------------------------------------+---------------------------------+----------+
1005| :c:data:`PyExc_ImportWarning` | :exc:`ImportWarning` | |
1006+------------------------------------------+---------------------------------+----------+
delirious-lettuce3378b202017-05-19 14:37:57 -06001007| :c:data:`PyExc_PendingDeprecationWarning`| :exc:`PendingDeprecationWarning`| |
cocoatomoe8c76312017-04-02 19:45:40 +09001008+------------------------------------------+---------------------------------+----------+
1009| :c:data:`PyExc_ResourceWarning` | :exc:`ResourceWarning` | |
1010+------------------------------------------+---------------------------------+----------+
1011| :c:data:`PyExc_RuntimeWarning` | :exc:`RuntimeWarning` | |
1012+------------------------------------------+---------------------------------+----------+
1013| :c:data:`PyExc_SyntaxWarning` | :exc:`SyntaxWarning` | |
1014+------------------------------------------+---------------------------------+----------+
1015| :c:data:`PyExc_UnicodeWarning` | :exc:`UnicodeWarning` | |
1016+------------------------------------------+---------------------------------+----------+
1017| :c:data:`PyExc_UserWarning` | :exc:`UserWarning` | |
1018+------------------------------------------+---------------------------------+----------+
1019
1020.. versionadded:: 3.2
1021 :c:data:`PyExc_ResourceWarning`.
1022
1023Notes:
1024
1025(1)
1026 This is a base class for other standard warning categories.