Error Categories
In the Essential Tools Module model, errors are divided into two broad categories: internal and external. (A third category also exists: stream buffer allocation errors. The Rogue Wave public interface does include a class to handle these errors, although they are far less common and are not discussed in detail here.)
Internal errors, which are further classified as either recoverable or non-recoverable, are due to errors in the internal logic of the program. As you might expect, they can be difficult to recover from and, indeed, the common default response is to abort the program. External errors are due to events beyond the scope of the program. Any non-trivial program should be prepared to recover from an external error.