On Fri, Jan 30, 2015 at 2:02 AM, Marko Rauhamaa <ma...@pacujo.net> wrote: > Mark Lawrence <breamore...@yahoo.co.uk>: > >> On 30/01/2015 06:16, Marko Rauhamaa wrote: >>> How about: >>> >>> ============================== >>> try: >>> do_interesting_stuff() >>> except ValueError: >>> try: >>> log_it() >>> except: >>> pass >>> raise >>> ============================== >>> >>> Surprisingly this variant could raise an unexpected exception: >>> >>> ============================== >>> try: >>> do_interesting_stuff() >>> except ValueError: >>> try: >>> log_it() >>> finally: >>> raise >>> ============================== >>> >>> A Python bug? >> >> It depends on the Python version that you're running - I think!!! See >> https://www.python.org/dev/peps/pep-3134/ > > TL;DR > > My Python did do exception chaining, but the problem is the surface > exception changes, which could throw off the whole error recovery. > > So I'm thinking I might have found a valid use case for the "diabolical > antipattern."
I suppose, although it seems awfully contrived to me. In any case it would still be better with "except Exception" rather than the bare except. Unless re-raising that ValueError is more important to you than letting the user hit Ctrl-C during the logging call. -- https://mail.python.org/mailman/listinfo/python-list