An error condition that changes the normal flow of control
in a program. An exception may be generated ("raised") by
hardware or software. Hardware exceptions include
reset, interrupt or a signal from a memory management
unit. Exceptions may be generated by the arithmetic logic
unit or floating-point unit for numerical errors such as
divide by zero, overflow or underflow or instruction
decoding errors such as privileged, reserved, trap or
undefined instructions. Software exceptions are even more
varied and the term could be applied to any kind of error
checking which alters the normal behaviour of the program.