Skip to content

reraise-no-cause (TRY200)#

Derived from the tryceratops linter.

What it does#

Checks for exceptions that are re-raised without specifying the cause via the from keyword.

Why is this bad?#

The from keyword sets the __cause__ attribute of the exception, which stores the "cause" of the exception. The availability of an exception "cause" is useful for debugging.

Example#

def reciprocal(n):
    try:
        return 1 / n
    except ZeroDivisionError:
        raise ValueError

Use instead:

def reciprocal(n):
    try:
        return 1 / n
    except ZeroDivisionError as exc:
        raise ValueError from exc

References#