MyInternships.in

Python Files & Errors

Python raise Statement

The raise statement lets your own code deliberately trigger an exception when something is wrong, instead of waiting for Python to hit an error on its own.


Raising an Exception Manually

Use raise followed by an exception type (and usually a message) to stop execution and signal a problem, exactly the way Python's built-in errors do.

Raising a ValueError
Python
def set_age(age):
    if age < 0:
        raise ValueError("Age cannot be negative")
    return age

set_age(-5)
Output
Output
Traceback (most recent call last):
  ...
ValueError: Age cannot be negative

When Should You Raise?

Raise an exception whenever your function receives bad input or reaches a state it genuinely cannot continue from — invalid arguments, a missing required file, an impossible calculation. This stops bad data from silently spreading through the rest of your program and produces a clear, immediate error message instead.

💡

A clear raised message like raise ValueError("age must be >= 0") saves hours of debugging compared to a program that silently produces wrong results.

Re-raising Inside except

Sometimes you want to log or partially handle an error, but still let it propagate up so the calling code knows something failed. A bare raise inside an except block re-raises the exact same exception that was caught.

Re-raising after logging
Python
try:
    result = 10 / 0
except ZeroDivisionError:
    print("Logging the error before passing it on...")
    raise

raise ... from ...

When you catch one exception and raise a different, more meaningful one, use raise NewError(...) from original_error. This keeps the original traceback attached, so anyone debugging can see the true root cause instead of a confusing, disconnected new error.

Chaining exceptions with from
Python
try:
    int("abc")
except ValueError as e:
    raise RuntimeError("Could not process user input") from e
  • raise ExceptionType("message") triggers an exception on purpose.
  • A bare raise inside except re-raises the same exception unchanged.
  • raise NewError(...) from original keeps both tracebacks linked for easier debugging.
  • Prefer raising specific, descriptive exceptions over generic ones.
ℹ️

Raising exceptions is a normal part of good function design — it is how a function tells its caller "I cannot safely continue with this input."

Related Python Topics

Keep learning with these closely related lessons.

Ready to use your Python skills?

Find Python, data science and software internships and fresher jobs across India.

Browse Python Internships