In this Python Exception Handling Tutorial series we'll see how to write user defined exceptions in Python.
Though Python has many built-in exception covering a lot of error scenarios but sometimes you as a user would want to create your own exception for a specific scenario in order to make error messages more relevant to the context. Such exceptions are called user-defined exceptions or custom exceptions.
User-defined exception in Python
To create a custom exception in Python you need to create a new exception class. That custom exception class should typically be derived from the Exception class (built in Exception class), either directly or indirectly.
Since your exception class is a class it can theoretically be defined to do anything any other class can do, but usually user-defined exception classes are kept simple, often only offering a number of attributes that allow information about the error to be extracted by handlers for the exception.
As a convention your custom exception should be defined with name that end in “Error”, similar to the naming of the standard exceptions.
User-defined exception Python example
Suppose you have a Python function that take age as a parameter and tells whether a person is eligible to vote or not. Voting age is 18 or more.
If person is not eligible to vote you want to raise an exception using raise statement, for this scenario you want to write a custom exception named “InvalidAgeError”.
# Custom exception class InvalidAgeError(Exception): def __init__(self, arg): self.msg = arg def vote_eligibility(age): if age < 18: raise InvalidAgeError("Person not eligible to vote, age is " + str(age)) else: print('Person can vote, age is', age) # calling function try: vote_eligibility(22) vote_eligibility(14) except InvalidAgeError as error: print(error)
Output
Person can vote, age is 22 Person not eligible to vote, age is 14
Hierarchical custom exceptions
When creating a module that can raise several distinct errors, a common practice is to create a base class for exceptions defined by that module, and subclass that to create specific exception classes for different error conditions:
class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Attributes: expression -- input expression in which the error occurred message -- explanation of the error """ def __init__(self, expression, message): self.expression = expression self.message = message
That's all for this topic User-defined Exceptions in Python. If you have any doubt or any suggestions to make please drop a comment. Thanks!
>>>Return to Python Tutorial Page
Related Topics
You may also like-