无异常时执行
我有一些代码想在没有发生异常的情况下执行。
现在我这样做:
try:
return type, self.message_handlers[type](self, length - 1)
finally:
if not any(self.exc_info()):
self.last_recv_time = time.time()
这样做可以改进吗?这是最好的方法吗?
更新0
可选的else部分会在try部分的代码执行完毕后运行。
目前,只有在发生异常、或者执行了return、continue或break语句时,控制才不会“流出”这个try部分的末尾。
2 个回答
28
在编程中,很多时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。我们需要确保水不会洒出来,也就是数据不会丢失。
有时候,我们会遇到一些问题,比如数据格式不对,或者数据不完整。这就像是水桶的形状不一样,导致水倒不进去。为了避免这些问题,我们需要提前检查数据,确保它们是可以使用的。
另外,编程中还有一个很重要的概念就是“函数”。可以把函数想象成一个机器,你把原料放进去,机器就会给你一个成品。这样我们就可以重复使用这些“机器”,让编程变得更简单。
总之,处理数据就像是搬运水,确保水的质量和数量是非常重要的,而函数则是帮助我们更高效地完成这个工作的工具。
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
9
你的代码看起来是你不想处理发生的错误,那为什么不直接这样做呢
result = type, self.message_handlers[type](self, length - 1)
self.last_recv_time = time.time()
return result
(我是不是漏掉了什么?)