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

  • Top Programming Languages and Tools Developed Using Python

    Python itself is not typically used to develop other programming languages, as it is a high-level language designed for general-purpose programming. However, Python has been used to create domain-specific languages (DSLs), tools for language development, and educational languages. Here are some examples: 1. Hy 2. Coconut Description: A functional programming language that compiles to Python. It adds…

  • Positional-Only Arguments in Python

    Positional-Only Arguments in Python Positional-only arguments are function parameters that must be passed by position (order) and cannot be passed by keyword name. Syntax Use the / symbol in the function definition to indicate that all parameters before it are positional-only: python def function_name(param1, param2, /, param3, param4): # function body Simple Examples Example 1: Basic Positional-Only Arguments python def calculate_area(length,…

  • Create lists

    In Python, there are multiple ways to create lists, depending on the use case. Below are the most common methods: 1. Direct Initialization (Using Square Brackets []) The simplest way to create a list is by enclosing elements in square brackets []. Example: python empty_list = [] numbers = [1, 2, 3, 4] mixed_list = [1, “hello”, 3.14,…

  • Static Methods

    The primary use of a static method in Python classes is to define a function that logically belongs to the class but doesn’t need access to the instance’s data (like self) or the class’s state (like cls). They are essentially regular functions that are grouped within a class namespace. Key Characteristics and Use Cases General…

  • re.split()

    Python re.split() Method Explained The re.split() method splits a string by the occurrences of a pattern. It’s like the built-in str.split() but much more powerful because you can use regex patterns. Syntax python re.split(pattern, string, maxsplit=0, flags=0) Example 1: Splitting by Multiple Delimiters python import retext1=”The re.split() method splits a string by the occurrences of a pattern. It’s like…

  • replace(), join(), split(), rsplit(), and splitlines() methods in Python

    1. replace() Method Purpose: Replaces occurrences of a substring with another substring.Syntax: python string.replace(old, new[, count]) Examples: Example 1: Basic Replacement python text = “Hello World” new_text = text.replace(“World”, “Python”) print(new_text) # Output: “Hello Python” Example 2: Limiting Replacements (count) python text = “apple apple apple” new_text = text.replace(“apple”, “orange”, 2) print(new_text) # Output: “orange orange apple”…

Leave a Reply

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