[capi-sig] exceptions, the right way

Lee l_armeanu at yahoo.co.nz
Thu Nov 17 20:33:30 CET 2011


Thanks Marc-Andre,
> If not, you simply pass on

> the NULL/-1 return value to the higher level function in your call
> stack.

This is exactly my problem. What I am trying to do (and the example seems to show) is:
- define an new type.
- define getsetters functions.
- say, if one want to delete an attribute, one writes in the setter function:

if (value == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete the last attribute"); return -1; }

so, one expects that can do:

import noddy2
mynoddy = noddy2.Noddy(number=15)
mynoddy.first = "a"
try:
    del mynoddy.last
except TypeError, e:
    print "Error: ", e

(passing the PyExc_TypeError to the interpreter). In my situation try/except is ignored and 
the interpreter crushes.
Am I missing something?

Lee


More information about the capi-sig mailing list