blob: e521fe2bad67b620c86f4b1d5b0ba05929d77d33 [file] [log] [blame]
Guido van Rossuma3309961993-07-28 09:05:47 +00001#ifndef Py_ERRORS_H
2#define Py_ERRORS_H
3#ifdef __cplusplus
4extern "C" {
5#endif
6
Guido van Rossumf70e43a1991-02-19 12:39:46 +00007/***********************************************************
Guido van Rossumfd71b9e2000-06-30 23:50:40 +00008Copyright (c) 2000, BeOpen.com.
9Copyright (c) 1995-2000, Corporation for National Research Initiatives.
10Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
11All rights reserved.
Guido van Rossumf70e43a1991-02-19 12:39:46 +000012
Guido van Rossumfd71b9e2000-06-30 23:50:40 +000013See the file "Misc/COPYRIGHT" for information on usage and
14redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Guido van Rossumf70e43a1991-02-19 12:39:46 +000015******************************************************************/
16
Guido van Rossum85a5fbb1990-10-14 12:07:46 +000017/* Error handling definitions */
18
Guido van Rossum43466ec1998-12-04 18:48:25 +000019DL_IMPORT(void) PyErr_SetNone Py_PROTO((PyObject *));
20DL_IMPORT(void) PyErr_SetObject Py_PROTO((PyObject *, PyObject *));
21DL_IMPORT(void) PyErr_SetString Py_PROTO((PyObject *, const char *));
22DL_IMPORT(PyObject *) PyErr_Occurred Py_PROTO((void));
23DL_IMPORT(void) PyErr_Clear Py_PROTO((void));
24DL_IMPORT(void) PyErr_Fetch Py_PROTO((PyObject **, PyObject **, PyObject **));
25DL_IMPORT(void) PyErr_Restore Py_PROTO((PyObject *, PyObject *, PyObject *));
Guido van Rossum85a5fbb1990-10-14 12:07:46 +000026
Barry Warsawc0dc92a1997-08-22 21:22:58 +000027/* Error testing and normalization */
Guido van Rossum43466ec1998-12-04 18:48:25 +000028DL_IMPORT(int) PyErr_GivenExceptionMatches Py_PROTO((PyObject *, PyObject *));
29DL_IMPORT(int) PyErr_ExceptionMatches Py_PROTO((PyObject *));
30DL_IMPORT(void) PyErr_NormalizeException Py_PROTO((PyObject**, PyObject**, PyObject**));
Barry Warsawc0dc92a1997-08-22 21:22:58 +000031
32
Guido van Rossum3f5da241990-12-20 15:06:42 +000033/* Predefined exceptions */
Guido van Rossum5c600e11990-10-14 20:00:25 +000034
Guido van Rossum04748321997-09-16 18:43:15 +000035extern DL_IMPORT(PyObject *) PyExc_Exception;
Barry Warsaw392d8271997-08-29 21:56:07 +000036extern DL_IMPORT(PyObject *) PyExc_StandardError;
Barry Warsaw65349a31997-09-16 21:50:36 +000037extern DL_IMPORT(PyObject *) PyExc_ArithmeticError;
Barry Warsaw392d8271997-08-29 21:56:07 +000038extern DL_IMPORT(PyObject *) PyExc_LookupError;
39
Guido van Rossum6fa44661997-04-02 05:22:53 +000040extern DL_IMPORT(PyObject *) PyExc_AssertionError;
Guido van Rossum051ab121995-02-27 10:17:52 +000041extern DL_IMPORT(PyObject *) PyExc_AttributeError;
Guido van Rossum051ab121995-02-27 10:17:52 +000042extern DL_IMPORT(PyObject *) PyExc_EOFError;
Guido van Rossum7d4266e1997-02-14 22:53:12 +000043extern DL_IMPORT(PyObject *) PyExc_FloatingPointError;
Barry Warsaw62a21a21998-07-23 15:57:34 +000044extern DL_IMPORT(PyObject *) PyExc_EnvironmentError;
Guido van Rossum051ab121995-02-27 10:17:52 +000045extern DL_IMPORT(PyObject *) PyExc_IOError;
Barry Warsaw62a21a21998-07-23 15:57:34 +000046extern DL_IMPORT(PyObject *) PyExc_OSError;
Guido van Rossum051ab121995-02-27 10:17:52 +000047extern DL_IMPORT(PyObject *) PyExc_ImportError;
48extern DL_IMPORT(PyObject *) PyExc_IndexError;
49extern DL_IMPORT(PyObject *) PyExc_KeyError;
50extern DL_IMPORT(PyObject *) PyExc_KeyboardInterrupt;
51extern DL_IMPORT(PyObject *) PyExc_MemoryError;
52extern DL_IMPORT(PyObject *) PyExc_NameError;
53extern DL_IMPORT(PyObject *) PyExc_OverflowError;
54extern DL_IMPORT(PyObject *) PyExc_RuntimeError;
Barry Warsawd052ff01998-12-01 18:34:01 +000055extern DL_IMPORT(PyObject *) PyExc_NotImplementedError;
Guido van Rossum051ab121995-02-27 10:17:52 +000056extern DL_IMPORT(PyObject *) PyExc_SyntaxError;
57extern DL_IMPORT(PyObject *) PyExc_SystemError;
58extern DL_IMPORT(PyObject *) PyExc_SystemExit;
59extern DL_IMPORT(PyObject *) PyExc_TypeError;
Guido van Rossum87460821999-06-22 14:47:32 +000060extern DL_IMPORT(PyObject *) PyExc_UnboundLocalError;
Guido van Rossum99cc9712000-03-10 22:33:32 +000061extern DL_IMPORT(PyObject *) PyExc_UnicodeError;
Guido van Rossum051ab121995-02-27 10:17:52 +000062extern DL_IMPORT(PyObject *) PyExc_ValueError;
63extern DL_IMPORT(PyObject *) PyExc_ZeroDivisionError;
Guido van Rossumdb0c9f72000-02-17 15:17:18 +000064#ifdef MS_WINDOWS
65extern DL_IMPORT(PyObject *) PyExc_WindowsError;
66#endif
Guido van Rossum3e55cb61990-10-21 22:09:30 +000067
Barry Warsaw392d8271997-08-29 21:56:07 +000068extern DL_IMPORT(PyObject *) PyExc_MemoryErrorInst;
69
70
Guido van Rossum5c600e11990-10-14 20:00:25 +000071/* Convenience functions */
72
Guido van Rossum43466ec1998-12-04 18:48:25 +000073extern DL_IMPORT(int) PyErr_BadArgument Py_PROTO((void));
74extern DL_IMPORT(PyObject *) PyErr_NoMemory Py_PROTO((void));
75extern DL_IMPORT(PyObject *) PyErr_SetFromErrno Py_PROTO((PyObject *));
76extern DL_IMPORT(PyObject *) PyErr_SetFromErrnoWithFilename Py_PROTO((PyObject *, char *));
77extern DL_IMPORT(PyObject *) PyErr_Format Py_PROTO((PyObject *, const char *, ...));
Guido van Rossumdb0c9f72000-02-17 15:17:18 +000078#ifdef MS_WINDOWS
79extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *);
80extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
81#endif
Guido van Rossum3e55cb61990-10-21 22:09:30 +000082
Guido van Rossum43466ec1998-12-04 18:48:25 +000083extern DL_IMPORT(void) PyErr_BadInternalCall Py_PROTO((void));
Guido van Rossum25831651993-05-19 14:50:45 +000084
Guido van Rossum2d2c3441997-09-16 21:50:37 +000085/* Function to create a new exception */
Guido van Rossum43466ec1998-12-04 18:48:25 +000086DL_IMPORT(PyObject *) PyErr_NewException Py_PROTO((char *name, PyObject *base,
Guido van Rossum2d2c3441997-09-16 21:50:37 +000087 PyObject *dict));
88
Barry Warsawf3f41a91997-01-03 00:15:03 +000089/* In sigcheck.c or signalmodule.c */
Guido van Rossum43466ec1998-12-04 18:48:25 +000090extern DL_IMPORT(int) PyErr_CheckSignals Py_PROTO((void));
91extern DL_IMPORT(void) PyErr_SetInterrupt Py_PROTO((void));
Barry Warsawf3f41a91997-01-03 00:15:03 +000092
Guido van Rossumb6775db1994-08-01 11:34:53 +000093
Guido van Rossuma3309961993-07-28 09:05:47 +000094#ifdef __cplusplus
95}
96#endif
97#endif /* !Py_ERRORS_H */