Post

raise

Let's use `raise`.

raise

The raise statement in Python is used to explicitly trigger an exception. It can be used to raise built-in exceptions or custom exceptions. Here’s how you can use it:

Raising a Built-in Exception

You can raise an exception by specifying the exception type.

1
raise ValueError("Invalid input!")
1
2
3
4
5
6
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[7], line 1
----> 1 raise ValueError("Invalid input!")

ValueError: Invalid input!

Raising a Custom Exception

You can define your own exception class by inheriting from Exception and then raise it.

1
2
3
4
class CustomError(Exception):
    pass

raise CustomError("This is a custom exception.")
1
2
3
4
5
6
7
8
---------------------------------------------------------------------------
CustomError                               Traceback (most recent call last)
Cell In[8], line 4
      1 class CustomError(Exception):
      2     pass
----> 4 raise CustomError("This is a custom exception.")

CustomError: This is a custom exception.

Raising an Exception Conditionally

You can define your own exception class by inheriting from Exception and then raise it.

1
2
3
4
5
6
def divide(a, b):
	if b == 0:
        raise ZeroDivisionError("Division by zero is not allowed.")
    return a / b

divide(5, 0)  # This will raise an exception
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[9], line 6
      3         raise ZeroDivisionError("Division by zero is not allowed.")
      4     return a / b
----> 6 divide(5, 0)  # This will raise an exception

Cell In[9], line 3, in divide(a, b)
      1 def divide(a, b):
      2     if b == 0:
----> 3         raise ZeroDivisionError("Division by zero is not allowed.")
      4     return a / b

ZeroDivisionError: Division by zero is not allowed.

Re-raising an Exception

Inside an except block, you can use raise to propagate an exception.

  • x = int("abc") triggers an exception.
1
x = int("abc")
1
2
3
4
5
6
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[21], line 1
----> 1 x = int("abc")

ValueError: invalid literal for int() with base 10: 'abc'
  • x = int("abc") triggers an exception. The exception is ValueError, so you can use ValueError instead of Exception.
1
2
3
4
try:
    x = int("abc") # This will cause a ValueError
except Exception as e:
    raise e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[18], line 4
      2     x = int("abc")  # This will cause a ValueError
      3 except Exception as e:
----> 4     raise e

Cell In[18], line 2
      1 try:
----> 2     x = int("abc")  # This will cause a ValueError
      3 except Exception as e:
      4     raise e

ValueError: invalid literal for int() with base 10: 'abc'
1
2
3
4
try:
    x = int("abc") # This will cause a ValueError
except ValueError as e:
    raise e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[22], line 4
      2     x = int("abc")  # This will cause a ValueError
      3 except ValueError as e:
----> 4     raise e

Cell In[22], line 2
      1 try:
----> 2     x = int("abc")  # This will cause a ValueError
      3 except ValueError as e:
      4     raise e

ValueError: invalid literal for int() with base 10: 'abc'
  • x = int("abc") triggers an exception. The exception is ValueError, so you can use ValueError instead of Exception. If you use ZeroDivisionError, the program will not enter the except block when the exception is triggered.
1
2
3
4
try:
    x = int("abc") # This will cause a ValueError
except ZeroDivisionError as e:
    raise e
1
2
3
4
5
6
7
8
9
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[19], line 2
      1 try:
----> 2     x = int("abc")  # This will cause a ValueError
      3 except ZeroDivisionError as e:
      4     raise e

ValueError: invalid literal for int() with base 10: 'abc'
This post is licensed under CC BY 4.0 by the author.