如果没有抛出异常,则执行

时间:2011-08-02 12:20:48

标签: python exception python-3.x try-catch finally

如果异常,我会想要执行一些代码。

目前我正在这样做:

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

可以改进吗?这是最好的方法吗?

Update0

  

如果控制流出,则执行可选的else子句   try子句的结尾。

     

目前,控制“流出结束”除外   异常或执行return,continue或break语句。

2 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:8)

您的代码表明您不希望在发生异常时捕获异常,所以为什么不简单

result = type, self.message_handlers[type](self, length - 1)
self.last_recv_time = time.time()
return result

(我错过了什么吗?)