Выполнить, если не сгенерировано исключение - PullRequest
5 голосов
/ 02 августа 2011

У меня есть код, который я хочу выполнить, если исключение не брошено.

В настоящее время я делаю это:

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 ]

18 голосов
/ 02 августа 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
8 голосов
/ 02 августа 2011

Ваш код предполагает, что вы не хотите перехватывать исключение, если оно возникает, так почему бы просто не

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

(Я что-то упустил?)

...