Ver Mensaje Individual
  #5  
Antiguo 13-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Cita:
Empezado por Lepe Ver Mensaje

creo que todo se reduce a:
- querer abortar la ejecución del programa.

Si quieres abortar, usa una excepción.
Si no, usa un MessageBox.
Me gusta esa descripción simple: para abortar.

Cita:
Empezado por Lepe Ver Mensaje
Sólo comentar que esa opción tiene mucho peligro:
- el programa no hace lo que se espera
- no sabes que ha ocurrido un error.
- no sabes cómo arreglarlo.

Si no sabes cómo arreglarlo, no lo toques ... quiero decir, es mejor ver la excepción en pantalla o enviarlo a un archivo .log que ignorarla definitivamente. Si la VCL ha lanzado una excepción... por algo será

Saludos
Bueno amigo, yo dije opciones. No es una buena elección como bien lo mencionas, pero en fin de que se puede optar por esa opción se puede.

Por cierto. Si se hace uso de un Log de excepciones lo mejor es que sea un singleton. Es decir, que exista un sólo punto en donde se traten a las excepciones. Todas las excepciones van a un mismo objeto TLog, por ejemplo, y son guardadas en un único archivo.

Aunque en ocasiones, no es buena opción. Más si tiene pensando en trabajar con muchos archivos .log.

De igual manera, en ocasiones ante casos de éstas excepciones raras y a las que no sabemos tratar lo mejor es tener un "cuadro de diálogo único" por donde comunicarlas.

Lo que si es una buena opción a tener en cuenta es la de convertir excepciones a un grado de abstracción adecuado y entendible para la clase que la recibe. Por ejemplo, supongamos que tenemos las clase A, B y C. A para trabajar se comunica con B, y B con C. A cuenta con un método MA, y en el cual se procede a una comunicación lineal hasta C. Es decir, MA invoca a un método MB, y MB a uno de MC. Ahora MC lanza una excepción EC, que la captura MB. Esta excepción a A no le corresponde el adecuado grado de abstracción, por tanto B "convierte" a esa excepción EC a una excepción EB, añadiendole la información necesaria para que A sepa como tratarla y se la transmite a A.

Espero que me entienda,

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita