En Wed, 24 Dec 2008 13:42:38 -0200, Ross <rlig...@gmail.com> escribió:
For a project that I am doing, it would be useful to have an exception class that stores some additional data along with the message. However, I want to be able to store a couple pointers to C++ classes, so I can't just use an exception created with PyExc_NewException.
In fact you can, you could store those pointers as attributes of the exception object, using a PyCObject. Accessing those attributes isn't as easy as doing exc->field, but I think it's easy enough. Inheriting from some exception type requires you to define the type structure and fill it right, and IMHO is a lot harder.
If I were to subclass the built-in Exception type, I would need to have access to the PyExc_ExceptionObject, but the headers only give PyExc_Exception, the type object. This seems like a rather straightforward task, but I can't seem to find any documentation for it. Does anyone know how to do this? Thanks!
Perhaps there is a misunderstanding here. To subclass a type, you need the type, not an instance of such type. The "Exception" class you use in Python code is "PyExc_Exception" in C code. Usually one would inherit a subclass, RuntimeError by example, so use PyExc_RuntimeError as the base type.
-- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list