By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
432,028 Members | 1,092 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 432,028 IT Pros & Developers. It's quick & easy.

Exception difference 2.4 ==> 2.5

P: n/a
I am having a strange problem and I can't seem to zero in on it. I am
also having trouble reducing it to a small enough snippet that I can
post here. I think that I am doing what the more complex script does
but none of my attempts fail. So, here is a description just in case
someone has seen something that smells like this and can suggest some
areas to do further poking.

I have a class that subclasses xmlrpcserver.RequestHandler. It has a
method that takes a function name that it looks up with getattr. It
then calls the looked up method in this try/except block:

try:
return server_method(pkt)
except Exception, failure:
syslog(LOG_WARNING, "%s, %s" % (Exception, failure))
self.print_tb(sys.exc_info())

try: fault = self.faultConverter.errorToFault(failure)
except Exception, err:
syslog(LOG_ERR, "Error processing failure: %r" % err)
fault = xmlrpclib.Fault(8002, "Internal error")

syslog(LOG_DEBUG, "Converted failure %r to fault %r (%r)" %
\ (failure, fault, failure))

if fault.faultCode < 10000:
syslog(LOG_ERR, "Unconverted fault: %r" % failure)

return fault

This class is then subclassed by another class that adds the methods
that are to be looked up. Those methods may raise exceptions if there
are errors.

Under Python 2.4 this works fine. If an exception is raised in the
looked up method it gets handled by this code just fine. Under 2.5,
however, the exception is not caught here. It's as if there was no
try/except here at all.

I'm not sure if I have left off some critical piece of information or
just littered this post with red herrings. I'm open to both
reasoned suggestions as well as wild speculation.

--
D'Arcy J.M. Cain <da***@druid.net | Democracy is three wolves
http://www.druid.net/darcy/ | and a sheep voting on
+1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner.
Nov 19 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
D'Arcy J.M. Cain <da***@druid.netwrote:
>Under Python 2.4 this works fine. If an exception is raised in the
looked up method it gets handled by this code just fine. Under 2.5,
however, the exception is not caught here. It's as if there was no
try/except here at all.
Python 2.5 changed the exception hierarchy a bit. The Exception class
is no longer at the root and now inheirits from BaseException. If the
exception being thrown was KeyboardInterrupt or SystemExit then it won't
be caught by your code.

Ross Ridge

--
l/ // Ross Ridge -- The Great HTMU
[oo][oo] rr****@csclub.uwaterloo.ca
-()-/()/ http://www.csclub.uwaterloo.ca/~rridge/
db //
Nov 19 '08 #2

P: n/a
On Wed, 19 Nov 2008 01:57:37 -0500
Ross Ridge <rr****@csclub.uwaterloo.cawrote:
D'Arcy J.M. Cain <da***@druid.netwrote:
Under Python 2.4 this works fine. If an exception is raised in the
looked up method it gets handled by this code just fine. Under 2.5,
however, the exception is not caught here. It's as if there was no
try/except here at all.

Python 2.5 changed the exception hierarchy a bit. The Exception class
is no longer at the root and now inheirits from BaseException. If the
exception being thrown was KeyboardInterrupt or SystemExit then it won't
be caught by your code.
Yes, I was aware of that but the error not being caught is
RuntimeError. I also tried a bare "except" just to be sure but same
behaviour.

--
D'Arcy J.M. Cain <da***@druid.net | Democracy is three wolves
http://www.druid.net/darcy/ | and a sheep voting on
+1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner.
Nov 19 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.