Open In App

Define Custom Exceptions in Python

Last Updated : 03 Jun, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In Python, exceptions occur during the execution of a program that disrupts the normal flow of the program’s instructions. When an error occurs, Python raises an exception, which can be caught and handled using try and except blocks. Here’s a simple example of handling a built-in exception:

Python
try:
    result = 10 / 0
except ZeroDivisionError:
    print("You cannot divide by zero!")

In this example, ZeroDivisionError is a built-in exception that gets raised when you attempt to divide by zero.

Why Define Custom Exceptions?

Custom exceptions are useful in the following scenarios:

  1. Clarity: They provide clear, specific error messages that are relevant to your application.
  2. Granularity: They allow for more fine-grained error handling, making it easier to pinpoint and address specific issues.
  3. Reusability: They can be reused across different parts of your application or even in different projects.

1. Defining a Custom Exception

To define a custom exception in Python, you need to create a new class that inherits from the built-in Exception class or one of its subclasses. Here’s a basic example:

Python
class MyCustomError(Exception):
    """Exception raised for custom error scenarios.

    Attributes:
        message -- explanation of the error
    """

    def __init__(self, message):
        self.message = message
        super().__init__(self.message)

In this example, MyCustomError is a custom exception class that inherits from Exception. It has an __init__ method that takes a message parameter and passes it to the base class constructor.

2. Defining a Custom Exception

To define a custom exception we create a new class that inherits from the built-in ‘Exception’ class and override its methods to customize its behavior for specificity.

Python
class MyCustomError(Exception):
    """Exception raised for custom error in the application."""

    def __init__(self, message, error_code):
        super().__init__(message)
        self.error_code = error_code

    def __str__(self):
        return f"{self.message} (Error Code: {self.error_code})"

3. Raising a Custom Exception

To raise a custom exception, use the raise keyword followed by an instance of your custom exception.

Python
def divide(a, b):
    if b == 0:
        raise MyCustomError("Division by zero is not allowed", 400)
    return a / b

Here the divide method raises the ‘MyCustomError’ when an attempt to divide by zero is made.

4. Handling Custom Exceptions

Custom exceptions can be handled similar to built-in exceptions using a `try…except` block.

Python
try:
    result = divide(10, 0)
except MyCustomError as e:
    print(f"Caught an error: {e}")

Here divide function raises `MyCustomError` and it is caught and handled by the `except` block. Additional attributes and methods can be used to enhance Custom Exceptions to provide more context or functionality.

Python
class FileProcessingError(Exception):
    def __init__(self, message, filename, lineno):
        super().__init__(message)
        self.filename = filename
        self.lineno = lineno

    def __str__(self):
        return f"{self.message} in {self.filename} at line {self.lineno}"


try:
    raise FileProcessingError("Syntax error", "example.txt", 13)
except FileProcessingError as e:
    print(f"Caught an error: {e}")

Tips for Effective Use of Custom Exceptions

When defining and using custom exceptions, consider the following tips to ensure they are effective and maintainable:

  • Naming: Use clear and descriptive names that end with Error to indicate that they are exceptions.
  • Documentation: Provide docstrings for your custom exceptions to explain when they should be used.
  • Hierarchy: Create a hierarchy of exceptions if your application requires handling different types of errors differently python


Next Article

Similar Reads

User-defined Exceptions in Python with Examples
Prerequisite: This article is an extension to Exception Handling. In this article, we will try to cover How to Define Custom Exceptions in Python with Examples. Example: class CustomError(Exception): pass raise CustomError("Example of Custom Exceptions in Python") Output: CustomError: Example of Custom Exceptions in Python Python throws errors and
4 min read
Python | Catching and Creating Exceptions
Catching all exceptions is sometimes used as a crutch by programmers who can’t remember all of the possible exceptions that might occur in complicated operations. As such, it is also a very good way to write undebuggable code. Because of this, if one catches all exceptions, it is absolutely critical to log or reports the actual reason for the excep
2 min read
Exceptions - Selenium Python
Exceptions in Selenium Python are the errors that occur when one of method fails or an unexpected event occurs. All instances in Python must be instances of a class that derives from BaseException. Two exception classes that are not related via subclassing are never equivalent, even if they have the same name. The built-in exceptions can be generat
3 min read
Errors and Exceptions in Python
Errors are the problems in a program due to which the program will stop the execution. On the other hand, exceptions are raised when some internal events occur which changes the normal flow of the program. Two types of Error occurs in python. Syntax errorsLogical errors (Exceptions) Syntax errors When the proper syntax of the language is not follow
3 min read
Python - Catch All Exceptions
In this article, we will discuss how to catch all exceptions in Python using try, except statements with the help of proper examples. But before let's see different types of errors in Python. There are generally two types of errors in Python i.e. Syntax error and Exceptions. Let's see the difference between them. Difference between Syntax Error and
3 min read
How to Catch Multiple Exceptions in One Line in Python?
Prerequisites: Exception handling in python There might be cases when we need to have exceptions in a single line. In this article, we will learn about how we can have multiple exceptions in a single line. We use this method to make code more readable and less complex. Also, it will help us follow the DRY (Don't repeat code) code method Generally t
1 min read
How To Fix Valueerror Exceptions In Python
Python comes with built-in exceptions that are raised when common errors occur. These predefined exceptions provide an advantage because you can use the try-except block in Python to handle them beforehand. For instance, you can utilize the try-except block to manage the ValueError exception in Python. In this article, we will see some methods and
4 min read
Handle Unhashable Type List Exceptions in Python
Python, with its versatile and dynamic nature, empowers developers to create expressive and efficient code. However, in the course of Python programming, encountering errors is inevitable. One such common challenge is the "Unhashable Type List Exception". In this article, we will dive deep into the intricacies of Unhashable Type List Exception in P
3 min read
Concrete Exceptions in Python
In Python, exceptions are a way of handling errors that occur during the execution of the program. When an error occurs Python raises an exception that can be caught and handled by the programmer to prevent the program from crashing. In this article, we will see about concrete exceptions in Python in detail with the help of examples. Concrete Excep
3 min read
Scrapy - Exceptions
Python-based Scrapy is a robust and adaptable web scraping platform. It provides a variety of tools for systematic, effective data extraction from websites. It helps us to automate data extraction from numerous websites. Scrapy Python Scrapy describes the spider that browses websites and gathers data in a clear and concise manner. The spider is in
7 min read
Article Tags :
Practice Tags :
three90RightbarBannerImg