blob: f461068ab28fd90f4e5d2c9281c534a7a085c2da [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
Fred Draked5c84ed2000-07-08 17:25:55 +000019DL_IMPORT(void) PyErr_SetNone(PyObject *);
20DL_IMPORT(void) PyErr_SetObject(PyObject *, PyObject *);
21DL_IMPORT(void) PyErr_SetString(PyObject *, const char *);
22DL_IMPORT(PyObject *) PyErr_Occurred(void);
23DL_IMPORT(void) PyErr_Clear(void);
24DL_IMPORT(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
25DL_IMPORT(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
Guido van Rossum85a5fbb1990-10-14 12:07:46 +000026
Barry Warsawc0dc92a1997-08-22 21:22:58 +000027/* Error testing and normalization */
Fred Draked5c84ed2000-07-08 17:25:55 +000028DL_IMPORT(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
29DL_IMPORT(int) PyErr_ExceptionMatches(PyObject *);
30DL_IMPORT(void) PyErr_NormalizeException(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;
Fred Draked5c84ed2000-07-08 17:25:55 +000057extern DL_IMPORT(PyObject *) PyExc_IndentationError;
58extern DL_IMPORT(PyObject *) PyExc_TabError;
Guido van Rossum051ab121995-02-27 10:17:52 +000059extern DL_IMPORT(PyObject *) PyExc_SystemError;
60extern DL_IMPORT(PyObject *) PyExc_SystemExit;
61extern DL_IMPORT(PyObject *) PyExc_TypeError;
Guido van Rossum87460821999-06-22 14:47:32 +000062extern DL_IMPORT(PyObject *) PyExc_UnboundLocalError;
Guido van Rossum99cc9712000-03-10 22:33:32 +000063extern DL_IMPORT(PyObject *) PyExc_UnicodeError;
Guido van Rossum051ab121995-02-27 10:17:52 +000064extern DL_IMPORT(PyObject *) PyExc_ValueError;
65extern DL_IMPORT(PyObject *) PyExc_ZeroDivisionError;
Guido van Rossumdb0c9f72000-02-17 15:17:18 +000066#ifdef MS_WINDOWS
67extern DL_IMPORT(PyObject *) PyExc_WindowsError;
68#endif
Guido van Rossum3e55cb61990-10-21 22:09:30 +000069
Barry Warsaw392d8271997-08-29 21:56:07 +000070extern DL_IMPORT(PyObject *) PyExc_MemoryErrorInst;
71
72
Guido van Rossum5c600e11990-10-14 20:00:25 +000073/* Convenience functions */
74
Fred Draked5c84ed2000-07-08 17:25:55 +000075extern DL_IMPORT(int) PyErr_BadArgument(void);
76extern DL_IMPORT(PyObject *) PyErr_NoMemory(void);
77extern DL_IMPORT(PyObject *) PyErr_SetFromErrno(PyObject *);
78extern DL_IMPORT(PyObject *) PyErr_SetFromErrnoWithFilename(PyObject *, char *);
79extern DL_IMPORT(PyObject *) PyErr_Format(PyObject *, const char *, ...);
Guido van Rossumdb0c9f72000-02-17 15:17:18 +000080#ifdef MS_WINDOWS
81extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *);
82extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
83#endif
Guido van Rossum3e55cb61990-10-21 22:09:30 +000084
Fred Draked5c84ed2000-07-08 17:25:55 +000085extern DL_IMPORT(void) PyErr_BadInternalCall(void);
Guido van Rossum25831651993-05-19 14:50:45 +000086
Guido van Rossum2d2c3441997-09-16 21:50:37 +000087/* Function to create a new exception */
Fred Draked5c84ed2000-07-08 17:25:55 +000088DL_IMPORT(PyObject *) PyErr_NewException(char *name, PyObject *base,
89 PyObject *dict);
Guido van Rossum2d2c3441997-09-16 21:50:37 +000090
Barry Warsawf3f41a91997-01-03 00:15:03 +000091/* In sigcheck.c or signalmodule.c */
Fred Draked5c84ed2000-07-08 17:25:55 +000092extern DL_IMPORT(int) PyErr_CheckSignals(void);
93extern DL_IMPORT(void) PyErr_SetInterrupt(void);
Barry Warsawf3f41a91997-01-03 00:15:03 +000094
Guido van Rossumb6775db1994-08-01 11:34:53 +000095
Guido van Rossuma3309961993-07-28 09:05:47 +000096#ifdef __cplusplus
97}
98#endif
99#endif /* !Py_ERRORS_H */