Essential Tools Module User's Guide : Chapter 9 Error Handling and Reporting : Error Categories
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.
The Essential Tools Module Error Model
The following table describes errors in the Essential Tools Module error model.
Table 19 – Error Types in the Essential Tools Module 
Error Types:
Internal Non-recoverable
Internal Recoverable
External
Cause:
Faulty logic or coding in the program
Faulty logic or coding in the program
Events beyond the scope of the program
Examples:
Bounds error; inserting a null pointer into 0a collection
Bounds error in a linked list; attempt to use an invalid date
Attempts to write a bad date, or to invert a singular matrix; stream write error; out of memory
Predictable?
Yes
Yes
No
Cost to detect:
High
Low
Low
Level of abstraction:
Low
Low
High
Where detected:
Debug version of library
Debug and production version of library
Debug and production version of library
Response:
No recovery mechanism
Throws an exception inheriting from RWInternalErr
Throws an exception inheriting from RWExternalErr, or provide test for object validity