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 |