Internal Errors
Internal errors are due to faulty logic or coding in the program. Common types of internal errors include:
Bounds errors
Inserting a null pointer into a collection
Attempting to use a bad date
All these errors should be preventable. For example, you always know the permissible range of indices for an array, so you can probably avoid a bounds error. You would correct your program's use of a bad date as an obvious logic error.
Internal errors can be further classified according to the cost of error detection, and whether or not the error will be detected at run time. The two categories are:
Non-recoverable internal errors
Recoverable internal errors