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