Sometimes, you may want something to occur regardless of whatever exception happened, for example, if you have to clean up some resources.
finally block of a
try clause will happen regardless of whether any exceptions were raised.
resource = allocate_some_expensive_resource() try: do_stuff(resource) except SomeException as e: log_error(e) raise # re-raise the error finally: free_expensive_resource(resource)
This pattern is often better handled with context managers (using the