The following table categorizes and describes errors in the Tools.h++ error model. You can use the table as a quick overview, and return to it as a reference.
Error Type: |
Internal |
External |
|
Non-recoverable |
Recoverable |
||
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 a collection |
Bounds error in a linked list; attempt to use an invalid date |
Attempt 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 |
Throw an exception inheriting from RWInternalErr |
Throw an exception inheriting from RWExternalErr, or provide test for object validity |