Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Marko Rauhamaa Newsgroups: comp.lang.python Subject: Re: try/except/finally Date: Sun, 08 Jun 2014 10:12:54 +0300 Organization: A noiseless patient Spider Lines: 28 Message-ID: <87lht73mdl.fsf@elektro.pacujo.net> References: <0a89c96d-de62-42ad-be48-6107ce10d215@googlegroups.com> <539396F3.5090508@stoneleaf.us> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx05.eternal-september.org; posting-host="ff5cf27ef3d5b31f034d3b72bdc27a41"; logging-data="30733"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19vyyDMHR8efwjprySiVK0y" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Cancel-Lock: sha1:ViQFZCfUeAqOfS1FoKA4NmojII4= sha1:uKhfE7LuqHQMlsGbMep1LdNKSAI= Xref: csiph.com comp.lang.python:72956 Mark Lawrence : >>> A return statement inside a finally block is code smell. >> Not to my nose. It seems like a perfectly reasonable thing to do. > I agree, the code smell is the return in the except block. Here's a regular pattern that I use for nonblocking I/O: def poll(self): try: message = self.sock.recv(0x10000) except IOError as e: if e.errno == errno.EAGAIN: return if errcode == errno.EINTR: self.trigger() return self.handle_io_error(e.errno) return self.trigger() self.handle_recv(message) Does anyone have an example motivating a return from finally? It seems to me it would always be a bad idea as it silently clears all unexpected exceptions. Marko