La variedad de tareas que se resuelven hoy con la ayuda de computadoras personales es proporcionada por la existencia de un enorme conjunto de programas de aplicación. La conveniencia de trabajar con el software depende en gran medida de su fiabilidad, que se expresa en ausencia de situaciones de emergencia. Sin embargo, muchos programas fallan en el momento más inoportuno. ¿Por qué?
El mecanismo de excepción se utiliza para rastrear y manejar situaciones especiales, anormales o erróneas que surgen durante la operación de programas de computadora bajo el control de sistemas operativos modernos. Las excepciones pueden ser hardware (lanzado por el procesador) y software (lanzado por la propia aplicación o algún componente externo enchufable).
Independientemente del tipo, la excepción puede detectarse y manejarse correctamente. Las excepciones no detectadas van al controlador de la biblioteca de tiempo de ejecución raíz o al controlador instalado en el sistema operativo. Si esto sucede, el programa se bloquea con un mensaje o una ventana de terminación anormal (en Windows). Si el controlador del sistema operativo no funcionó (por ejemplo, se eliminó deliberadamente), el programa "se bloquea silenciosamente". Por lo tanto, los programas se bloquean debido a excepciones que no se pueden manejar. Las razones de la ocurrencia de excepciones son diferentes.
En la inmensa mayoría de los casos, los programas fallan debido a la ejecución de su propio código que contiene errores de implementación explícitos o implícitos. La lista de posibles causas de emergencias es muy larga. Estos son errores clásicos de operaciones en números de punto flotante (por ejemplo, división por 0) y errores de trabajo con la memoria (lectura o escritura fuera del espacio de direcciones del proceso, acceso a páginas protegidas, escritura en un área de memoria de solo lectura)., pila de desbordamiento debido a la recursividad infinita, etc. En estos casos, se lanzan excepciones de hardware o excepciones del sistema operativo.
Los errores implícitos incluyen varios casos de filtrado insuficiente de los datos de entrada, falta de validación de los valores del puntero y mucho más. Tales deficiencias conducen a situaciones excepcionales solo en ciertos casos.
Los errores de implementación también se pueden encontrar en los componentes externos utilizados por la aplicación. Por ejemplo, en bibliotecas dinámicas que brindan la funcionalidad necesaria o módulos complementarios. El código de programa que se carga implícitamente en el espacio de direcciones de un proceso (por ejemplo, para interceptar ciertas funciones de la API) también puede hacer que el programa se bloquee.
Muchos componentes y bibliotecas (por ejemplo, ADO en Windows) utilizan el mecanismo de excepción mediante programación como una prioridad para informar errores. La ausencia o el manejo incompleto de excepciones por parte de este tipo de aplicación puede provocar su bloqueo incluso en situaciones completamente inofensivas (como la pérdida de conexión a la base de datos).