1.8. Gestión de excepciones: tratamiento de errores

Desde los inicios de los lenguajes de programación, la gestión de errores ha sido uno de los asuntos más difíciles. Es tan complicado diseñar un buen esquema de gestión de errores, que muchos lenguajes simplemente lo ignoran, delegando el problema en los diseñadores de la librería, que lo resuelven a medias, de forma que puede funcionar en muchas situaciones, pero se pueden eludir, normalmente ignorándolos. El problema más importante de la mayoría de los esquemas de gestión de errores es que dependen de que el programador se preocupe en seguir un convenio que no está forzado por el lenguaje. Si los programadores no se preocupan, cosa que ocurre cuando se tiene prisa, esos esquemas se olvidan fácilmente.

La gestión de excepciones «conecta» la gestión de errores directamente en el lenguaje de programación y a veces incluso en el sistema operativo. Una excepción es un objeto que se «lanza» desde el lugar del error y puede ser «capturado» por un manejador de excepción apropiado diseñado para manipular este tipo particular de error. Es como si la gestión de errores fuera una ruta de ejecución diferente y paralela que se puede tomar cuando las cosas van mal. Y como usa un camino separado de ejecución, no necesita interferir con el código ejecutado normalmente. Eso hace que el código sea más simple de escribir ya que no se fuerza al programador a comprobar los errores constantemente. Además, una excepción no es lo mismo que un valor de error devuelto por una función o una bandera fijada por una función para indicar una condición de error, que se puede ignorar. Una excepción no se puede ignorar, de modo que está garantizado que habrá que tratarla en algún momento. Finalmente, las excepciones proporcionan una forma para recuperar una situación consistente. En lugar de salir simplemente del programa, a menudo es posible arreglar las cosas y restaurar la ejecución, lo que produce sistemas más robustos.

Merece la pena tener en cuenta que la gestión de excepciones no es una característica orientada a objetos, aunque en lenguajes orientados a objetos las excepciones normalmente se representan con objetos. La gestión de excepciones existía antes que los lenguajes orientados a objetos.

En este Volumen se usa y explica la gestión de excepciones sólo por encima; el Volúmen 2 (disponible en www.BruceEckel.com) cubre con más detalle la gestión de excepciones.