On Mon, Nov 14, 2011 at 2:59 PM, MRAB <pyt...@mrabarnett.plus.com> wrote: > On 14/11/2011 21:53, Ethan Furman wrote: >> >> The code in 'else' in a 'try/except/else[/finally]' block seems >> pointless to me, as I am not seeing any difference between having the >> code in the 'else' suite vs having the code in the 'try' suite. >> >> Can anybody shed some light on this for me? >> > The difference is that if an exception occurs in the else block it > won't be caught by the exception handlers of the try statement.
Consider the examples: try: a raise RuntimeError() except RuntimeError: pass vs try: a except RuntimeError: pass else: raise RuntimeError() The first example will not raise an exception, while the second will result in a RuntimeError. Effectively, the first block will either: 1) If the "a" block raises a RuntimeError, continue, 2) If the "a" block raised any other error, propergate it, 3) If the "a" block does not raise an exception, continue. while the second block will either: 1) If the "a" block raises a RuntimeError, continue, 2) If the "a" block raised any other error, propergate it, 3) If the "a" block does not raise an exception, raise a RuntimeError. Note the difference in the 3rd case. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list