Peng Yu wrote: > Could somebody let me know how the python calls and exceptions are > dispatched? Is there a reference for it?
I'm not a Python expert, but I have read some parts of the implementation. Hopefully someone steps up if I misrepresent things here... In order to understand Python exception handling, take a look at various C function implementations. You will see that they commonly return a pointer to a Python object (PyObject*), even if it is a pointer to the 'None' singleton. So, a function in Python _always_ returns something, even if it is 'None'. If, at the C level, a function doesn't return anything (i.e. a C NULL pointer) that means that the function raised an exception. Checking this pointer is pretty easy, typically you check that, clean up and return NULL yourself. Further functions for manipulating the exception stack and declarations of exception types and singletons are found in pyerrors.h (in Python 2.5, at least). I mentioned an "exception stack" above, though I'm not 100% sure if that is the proper term. I think that exceptions can be stacked upon each other (e.g. an HTTPD throwing a high-level RequestError when it encounters a low- level IOError) and that that is also how the backtrace is implemented, but I'm not sure about that. Hopefully someone can confirm or correct me here and that it helped you. Cheers! Uli -- http://mail.python.org/mailman/listinfo/python-list