New submission from Kevin Cox: I think it would be useful to support multiple finally clauses. The idea would be that each clause would be run, even if prior clauses throw exceptions.
The idea came when hunting a bug in the Mozilla test suite. The code looked like as follows. try: resource1 = allocateresource1() resource2 = allocateresource2() dostuffthatmightthrowexception() finally: if resource1: resource1.close() if resource2: resource2.close() The problem is that if resource1,close() throws an exception resource2 is not closed. The alternative looks like this. try: resource1 = allocateresource1() try: resource2 = allocateresource2() dostuffthatmightthrowexception() finally: if resource2: resource2.close() finally: if resource2: resource2.close() Or it could look like this. try: resource1 = allocateresource1() resource2 = allocateresource2() dostuffthatmightthrowexception() finally: try: if resource1: resource1.close() finally: if resource2: resource2.close() Both of which exhibit indentation explosion when there are a number of resources that need to be cleaned up. If multiple finally clauses were allowed the code would be much more readable and would look as follows. try: resource1 = allocateresource1() resource2 = allocateresource2() dostuffthatmightthrowexception() finally: if resource1: resource1.close() finally: if resource2: resource2.close() ---------- messages: 214861 nosy: kevincox priority: normal severity: normal status: open title: Support Multiple finally clauses. _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue21067> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com