In the process of handling an exception, you may want to raise another exception. For example, if you get an
IOError while reading from a file, you may want to raise an application-specific error to present to the users of your library, instead.
You can chain exceptions to show how the handling of exceptions proceeded:
>>> try: 5 / 0 except ZeroDivisionError as e: raise ValueError("Division failed") from e Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: division by zero The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<stdin>", line 4, in <module> ValueError: Division failed