Finally Block in Exception Handling in Python

UpComing SoftWare Training Demos

🚀 *Playwright With AI Testing Demo In Telugu*
🗓️ *Date:* 28 Oct2026, 08:00 PM IST
📝 *Register Now!:*
https://www.vlrt.in/3r
👥 *Join WA Community:*
https://www.vlrt.in/3w
💡 *Course Content:*
https://www.vlrt.in/3c
▶️ *Demo Videos:*
https://www.vlrt.in/3v

🚀 *Gen AI Engineer (Production Focused)*
🗓️ *Date:* 29th Oct 2026, 06:00PM IST
📝 *Register Now!:*
https://www.vlrt.in/gr
👥 *Join WA Community:*
https://www.vlrt.in/gw
💡*Course Content:*
https://www.vlrt.in/ai
▶️ *Demo Videos:*
https://www.vlrt.in/gv

🚀 *Vulnerability Management Training Demo*
🗓️ *Date:* 28th Oct 2026, 10:00 AM IST
📝*Register Now!:*
https://www.vlrt.in/vr
👥 *Join Community:*
https://www.vlrt.in/cw
💡 *Course Content:*
https://www.vlrt.in/vc
▶️ *Demo Videos:*
https://www.vlrt.in/Vm

Finally Block in Exception Handling in Python

The finally block in Python exception handling executes regardless of whether an exception occurred or not. It’s always executed, making it perfect for cleanup operations like closing files, database connections, or releasing resources.

Basic Syntax:

python

try:
    # Code that might raise an exception
except SomeException:
    # Handle the exception
else:
    # Code that runs only if no exception occurred
finally:
    # Code that always runs (cleanup operations)

5 Basic Examples:

Example 1: File Operations with Cleanup

python

try:
    file = open("data.txt", "r")
    content = file.read()
    print("File content:", content)
except FileNotFoundError:
    print("Error: File not found!")
finally:
    print("Closing file (if it was opened)")
    if 'file' in locals() and not file.closed:
        file.close()
# Output: Always prints the closing message

Example 2: Database Connection Cleanup

python

try:
    # Simulate database connection
    db_connection = "Connected to database"
    print(db_connection)
    # Simulate an error
    raise ConnectionError("Database timeout")
except ConnectionError as e:
    print(f"Database error: {e}")
finally:
    print("Closing database connection")
    # Cleanup code here
# Output: Always closes the connection

Example 3: Division with Resource Cleanup

python

def divide_numbers(a, b):
    try:
        result = a / b
        print(f"Result: {result}")
        return result
    except ZeroDivisionError:
        print("Error: Cannot divide by zero!")
        return None
    finally:
        print("Calculation completed - cleaning up resources")

# Test cases
divide_numbers(10, 2)   # Success case
divide_numbers(10, 0)   # Error case

Example 4: Multiple Exception Types with Finally

python

try:
    num = int(input("Enter a number: "))
    reciprocal = 1 / num
except ValueError:
    print("Error: Please enter a valid number!")
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")
else:
    print(f"Reciprocal: {reciprocal}")
finally:
    print("Thank you for using the calculator!")
# Always says thank you regardless of input

Example 5: Network Request Simulation

python

import time

def make_network_request():
    try:
        print("Making network request...")
        time.sleep(1)  # Simulate network delay
        # Simulate random success/failure
        import random
        if random.choice([True, False]):
            raise ConnectionError("Network timeout")
        print("Request successful!")
    except ConnectionError as e:
        print(f"Network error: {e}")
    finally:
        print("Releasing network resources")
        print("Closing sockets and connections")

# Test multiple times
for i in range(3):
    make_network_request()
    print("-" * 30)

Key Characteristics of finally:

  • Always executes regardless of exceptions
  • Runs after try, except, and else blocks
  • Perfect for cleanup operations and resource management
  • Executes even if:
    • There’s a return statement in try or except blocks
    • There’s a break or continue in loops
    • An unhandled exception occurs

Example showing finally with return:

python

def test_finally_with_return():
    try:
        print("In try block")
        return "Return from try"
    except:
        print("In except block")
    finally:
        print("In finally block - always executes")

result = test_finally_with_return()
print(f"Function returned: {result}")
# Output: 
# In try block
# In finally block - always executes
# Function returned: Return from try

When to use finally:

  • Closing files and database connections
  • Releasing network resources
  • Cleaning up temporary files
  • Resetting hardware states
  • Any operation that must happen regardless of success/failure

The finally block ensures your code maintains proper resource management and cleanup, making your programs more robust and reliable.

Similar Posts

  • Quantifiers (Repetition)

    Quantifiers (Repetition) in Python Regular Expressions – Detailed Explanation Basic Quantifiers 1. * – 0 or more occurrences (Greedy) Description: Matches the preceding element zero or more times Example 1: Match zero or more digits python import re text = “123 4567 89″ result = re.findall(r’\d*’, text) print(result) # [‘123’, ”, ‘4567’, ”, ’89’, ”] # Matches…

  • Data hiding

    Data hiding in Python OOP is the concept of restricting access to the internal data of an object from outside the class. 🔐 It’s a way to prevent direct modification of data and protect the object’s integrity. This is typically achieved by using a naming convention that makes attributes “private” or “protected.” 🔒 How Data…

  • For Loop in Python

    A for loop in Python is used to iterate over a sequence (such as a list, tuple, dictionary, set, or string) or any other iterable object. Unlike a while loop that runs as long as a condition is true, a for loop runs a specific number of times—once for each item in the sequence. The…

  • pop(), remove(), clear(), and del 

    pop(), remove(), clear(), and del with 5 examples each, including slicing where applicable: 1. pop([index]) Removes and returns the item at the given index. If no index is given, it removes the last item. Examples: 2. remove(x) Removes the first occurrence of the specified value x. Raises ValueError if not found. Examples: 3. clear() Removes all elements from the list, making it empty. Examples: 4. del Statement Deletes elements by index or slice (not a method, but a…

  • Nested for loops, break, continue, and pass in for loops

    break, continue, and pass in for loops with simple examples. These statements allow you to control the flow of execution within a loop. 1. break Statement The break statement is used to terminate the loop entirely. When break is encountered, the loop immediately stops, and execution continues with the statement immediately following the loop. Example:…

  • Iterators in Python

    Iterators in Python An iterator in Python is an object that is used to iterate over iterable objects like lists, tuples, dictionaries, and sets. An iterator can be thought of as a pointer to a container’s elements. To create an iterator, you use the iter() function. To get the next element from the iterator, you…

Leave a Reply

Your email address will not be published. Required fields are marked *