Execute if no exception thrown

Matt Joiner picture Matt Joiner · Aug 2, 2011 · Viewed 10.2k times · Source

I have some code I want to execute if an exception is not thrown.

Currently I'm doing this:

try:
    return type, self.message_handlers[type](self, length - 1)
finally:
    if not any(self.exc_info()):
        self.last_recv_time = time.time()

Can this be improved on? Is this the best way to do it?

Update0

The optional else clause is executed if and when control flows off the end of the try clause.

Currently, control “flows off the end” except in the case of an exception or the execution of a return, continue, or break statement.

Answer

Thomas K picture Thomas K · Aug 2, 2011
try:
   tmp = type, self.message_handlers[type](self, length - 1)
except Exception:
   pass #or handle error, or just "raise" to re-raise
else:
   self.last_recv_time = time.time()
   return tmp