This module provides two interfaces. Firstly "Error" provides a procedural interface to exception handling. Secondly "Error" is a base class for errors/exceptions that can either be thrown, for subsequent catch, or can simply be recorded. . Errors in the class "Error" should not be thrown directly, but the user should throw errors from a sub-class of "Error".