See the Tutorial List

Python Exception Handling: raise Keyword

While the try and except block are for handling exceptions, the raise keyword on the contrary is to raise an exception.

Following is the syntax:

raise EXCEPTION_CLASS_NAME

Taking a simple usage example:

raise ZeroDivisionError

Traceback (most recent call last): File "main.py", line 1, in <module> raise ZeroDivisionError ZeroDivisionError: division by zero

If you have a piece of code where along with exception handling you have put in place some conditional statements to validate input etc, then in case of the conditions failing we can either just print a message or simple raise an exception which can then get handled by the common exception handling mechanism.

See the code below,

a = 10
b = 9
try:
    print(a/b)
except ZeroDivisionError:
    print("Please enter valid integer value")

Consider the above code where we have handled ZeroDivisionError, in this code we want to add a new validation for restricting user from inputting negative values.

Then we can simply add a new condition and use the raise keyword to raise an exception which is already handled.

a = 10
b = 9
try:
    # condition for checking for negative values
    if a < 0 or b < 0:
        # raising exception using raise keyword
        raise ZeroDivisionError
    print(a/b)
except ZeroDivisionError:
    print("Please enter valid integer value")

By this example we want to explain to you why and where we should use raise keyword to explicitly raise an exception.


raise Without Specifying Exception Class

When we use the raise keyword, it's not necessary to provide an exception class along with it. When we don't provide any exception class name with the raise keyword, it reraises the exception that last occured.

This is used generally inside an except code block to reraise an exception which is catched.

For example,

a = 10
b = 0
try:
    print(a/b)
except ZeroDivisionError:
    raise

Traceback (most recent call last): File "main.py", line 4, in print(a/b) ZeroDivisionError: division by zero


raise With an Argument

We can also provide an argument while raising an exception which is displayed along with the exception class name on the console.

We can pass any string for describing the reason for the exception or anything else.

raise ValueError("Incorrect Value")

Traceback (most recent call last): File "main.py", line 1, in <module> raise ValueError("Incorrect Value") ValueError: Incorrect Value