In Python 3, all exceptions must be derived (directly or indirectly) from BaseException. In practice, you will create your custom exceptions by deriving from the Exception class. As a major improvement in error reporting, if an exception occurs while handling an exception, the entire chain of exceptions is reported: