C built and raised exceptions are not being catched in Python code
A. Lloyd Flanagan
alloydflanagan at attbi.com
Wed Feb 26 23:09:10 CET 2003
WP <warrenpstma at _______.com.hotmail> wrote in message news:<b087a.5600$kf7.658052 at news20.bellglobal.com>...
> > Of course, I'd like to catch C raised exceptions in Python
> > code also, but I don't see what might be failing.
> What do you mean, raise exception in C? Do you mean return a NULL from a method in a C extension?
> In C you have return codes of NULL. Any time you return NULL, an exception is raised. You set
> the exception type (global) and return NULL.
It sounds to me like he means raising a C++ exception with the throw
statement. People tend to say 'C' when they mean 'C++', it causes a
lot of confusion.
Anyway, Vinco, I think the answer is that the C++ and python exception
mechanisms are totally different animals; python doesn't support C++
exceptions. This is pretty much inevitable since python is written in
C. Besides, C++ exceptions are really language-specific; it would
make it impossible to raise exceptions in other languages.
So what you'll have to do is catch your exception, set the global
value, and return a NULL (0) from your method. Of course, if you want
to extend python to catch C++ exceptions, I'm sure many people would
appreciate it. :)
More information about the Python-list