9

例外がスローされない場合に実行したいコードがあります。

現在、私はこれをやっています:

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 ステートメントの実行の場合を除き、「最後から流れていきます」。

4

2 に答える 2

26
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
于 2011-08-02T12:22:38.823 に答える
9

あなたのコードは、例外が発生した場合に例外をキャッチしたくないことを示唆しています。

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

(何か足りない?)

于 2011-08-02T12:53:51.160 に答える