Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Executing Code After Exceptions: Handling Cleanup Operations | Mastering Error Handling in Python
Python Advanced Concepts

book
Executing Code After Exceptions: Handling Cleanup Operations

The try, except, else, and finally clauses form a combination that handles exceptions, performs cleanup, and executes code based on whether exceptions were raised or not.

When No Exceptions Raised

The else block is executed if NO exceptions were raised in the try block. It is useful for code that must be executed if the try block did not throw an error but should not be executed if there was an error.

Example Usage

try:
print("Trying to divide")
result = 10 / 2
except ZeroDivisionError:
print("Divided by zero!")
else:
print("Division successful:", result)
1234567
try: print("Trying to divide") result = 10 / 2 except ZeroDivisionError: print("Divided by zero!") else: print("Division successful:", result)
copy

In this example, the else clause runs only if no ZeroDivisionError is caught in the try block.

Executing Cleanup Actions

The finally block lets you execute code, regardless of whether an exception was raised or not. This is typically used for clean-up actions.

Example Usage

try:
print("Trying to divide")
result = 10 / 0
except ZeroDivisionError:
print("Divided by zero!")
else:
print("Division successful:", result)
finally:
print("Operation attempted.")
123456789
try: print("Trying to divide") result = 10 / 0 except ZeroDivisionError: print("Divided by zero!") else: print("Division successful:", result) finally: print("Operation attempted.")
copy

In this scenario, the finally clause will execute regardless of whether the try block succeeds or the except block catches an exception, ensuring that the message "Operation attempted." is printed in every case.

Task

Swipe to start coding

Implement a complete error handling block with try, except, else, and finally clauses. Your task is to handle a simple calculation process.

Solution

def divide_numbers(x, y):
try:
result = x / y
except TypeError:
print("Please enter only numbers.")
except ZeroDivisionError:
print("Cannot divide by zero.")
else:
print(f"The result is {result}")
finally:
print("Operation attempted.\n")

# Call the function to test the error handling
divide_numbers(6, 2)
divide_numbers(6, 0)
divide_numbers(6, 'o')

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 2. Chapter 3
def divide_numbers(x, y):
___:
result = x / y
___ TypeError:
print("Please enter only numbers.")
___ ZeroDivisionError:
print("Cannot divide by zero.")
___
print(f"The result is {result}")
___:
print("Operation attempted.\n")

# Call the function to test the error handling
divide_numbers(6, 2)
divide_numbers(6, 0)
divide_numbers(6, 'o')
toggle bottom row
some-alt