Cita:
Iniciado por dmorill
Muchas gracias, el ultimo ejemplo tengo que digerirlo detalladamente jeje. Por tanto una excepción es una forma de adelantarse a un problema que uno sabe puede ocurrir y decirle al codigo que hacer cuando lo encuentre.
Saludos
No exactamente. Una excepción es una forma de avisar de que ha ocurrido algo anormal en el programa. La excepción debería contener suficiente información (mediante polimorfismo y métodos) como para identificar el origen del problema... por lo menos hasta un nivel mínimo que permita localizar el origen del problema.
Entonces, la excepción es recuperada por otra sección del código (que de forma directa o indirecta ha llamado al código que ha generado la excepción) y que actúa en consecuencia, ya sea mostrando un mensaje al usuario, abortando la aplicación o el proceso en curso, añadiendo una entrada en un log, ...
Un motivo para las excepciones es permitir que la aplicación se recupere de un error en las mejores condiciones posibles, ya que normalmente los errores se producen en el núcleo y dicha capa de código no es capaz de responder de forma conveniente ante un error. Sin excepciones la solución pasaría por propagar un mensaje de error entre las diferentes capas de código hasta llegar a una capaz de iniciar las acciones que permitan recuperarse del error... con las excepciones este proceso se automatiza.
PD.: el ejemplo anterior lo que propone es una secuencia de excepciones anidadas... al final el main recibe información precisa sobre dónde se ha producido el error (en qué función y en qué línea) y qué ruta de llamadas ha seguido el código para llegar hasta ese error.
Un saludo