- The try/finally cmpound statement lets you run cleanup code regardless of whether exceptions were riased in the try block
- The else block helps you minimize the amount of code in try blocks and visually ditingush the success case from the try/except blocks
- An else block can be used to perform additional actions after successful try block but before common cleanup in finally block
try: # Excute at the beginning except Exception as e: # Execute if an exception is riased in try block. else: # Execute if try block does not raise exception. # Allow user to write code which cause exception here in order to propagate exception to upper stack. finally: # Executed at the end anyway.
def load_json_key(data, key): try: result_dict = json.loads(data) # May raise ValueError except ValueError as e: raise KeyError from e else: return result_dict[key] # May raise KeyError