Python Exception Handling

Introduction

Exception handling in Python is a powerful mechanism to manage errors and exceptions that may occur during the execution of a program. It helps in maintaining the normal flow of the program even after an error occurs. By using exception handling, you can handle different types of errors gracefully and provide meaningful error messages to the users.

Python Exception Handling Overview

Exception handling in Python is done using the try, except, else, and finally blocks. It allows you to test a block of code for errors, handle the error, execute code if no error occurred, and execute code regardless of the result.

Key Points:

  • try block: Contains the code that may raise an exception.
  • except block: Contains the code that is executed if an exception occurs.
  • else block: Contains the code that is executed if no exception occurs.
  • finally block: Contains the code that is always executed, regardless of whether an exception occurs or not.

Basic Syntax

Example

try:
    # Code that may raise an exception
    result = 10 / 0
except ZeroDivisionError:
    # Code that runs if the specified exception occurs
    print("You can't divide by zero!")
else:
    # Code that runs if no exception occurs
    print("Division successful!")
finally:
    # Code that always runs
    print("Execution completed.")

Output

You can't divide by zero!
Execution completed.

Catching Specific Exceptions

You can catch specific exceptions by specifying the exception type after the except keyword.

Example

try:
    # Code that may raise an exception
    result = int("abc")
except ValueError:
    # Code that runs if a ValueError occurs
    print("Invalid literal for int() with base 10.")

Output

Invalid literal for int() with base 10.

Catching Multiple Exceptions

You can catch multiple exceptions by using multiple except blocks.

Example

try:
    # Code that may raise an exception
    result = 10 / 0
except ZeroDivisionError:
    # Code that runs if a ZeroDivisionError occurs
    print("You can't divide by zero!")
except ValueError:
    # Code that runs if a ValueError occurs
    print("Invalid literal for int() with base 10.")

Output

You can't divide by zero!

Catching All Exceptions

You can catch all exceptions by using the Exception class.

Example

try:
    # Code that may raise an exception
    result = 10 / 0
except Exception as e:
    # Code that runs if any exception occurs
    print(f"An error occurred: {e}")

Output

An error occurred: division by zero

Using the else Block

The else block runs if no exception occurs.

Example

try:
    # Code that may raise an exception
    result = 10 / 2
except ZeroDivisionError:
    # Code that runs if a ZeroDivisionError occurs
    print("You can't divide by zero!")
else:
    # Code that runs if no exception occurs
    print("Division successful!")

Output

Division successful!

Using the finally Block

The finally block runs regardless of whether an exception occurs or not.

Example

try:
    # Code that may raise an exception
    result = 10 / 0
except ZeroDivisionError:
    # Code that runs if a ZeroDivisionError occurs
    print("You can't divide by zero!")
finally:
    # Code that always runs
    print("Execution completed.")

Output

You can't divide by zero!
Execution completed.

Raising Exceptions

You can raise exceptions using the raise keyword.

Example

def divide(a, b):
    if b == 0:
        raise ValueError("The divisor cannot be zero.")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(e)

Output

The divisor cannot be zero.

Custom Exceptions

You can define your own exceptions by creating a new class that inherits from the built-in Exception class.

Example

class CustomError(Exception):
    pass

def check_value(value):
    if value < 0:
        raise CustomError("Negative value not allowed.")

try:
    check_value(-10)
except CustomError as e:
    print(e)

Output

Negative value not allowed.

Conclusion

Exception handling in Python allows you to manage errors gracefully and ensure the normal flow of your program. By using try, except, else, and finally blocks, you can catch and handle different types of exceptions, raise exceptions when needed, and create custom exceptions to suit your specific needs. Understanding and utilizing exception handling is essential for writing robust and error-resistant Python code.

Leave a Comment

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

Scroll to Top