Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-08-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Ejecutables sin mensajes de excepcion

Hola. Utilizo Delphi 5 y componentes de terceros en mis aplicaciones (SuiPack, Fast Report, etc).
Me gustaría que todos los posibles mensajes de excepción que yo no tenga controlados, en sus respectivos bloques try-except, no aparezcan al usuario por pantalla.
Para ello, incluyo en mi formulario principal un componente "ApplicationEvents" y le escribo el método OnException, que se supone que tomará aquellas excepciones que no han sido manejadas anteriormente, y vuelco el mensaje de excepción a un fichero de log para posteriormente analizarlo.

El problema es que aún así, siguen saliendo mensajes de excepción en pantalla y en inglés, del tipo "Violación de acceso.." etc. Me gustaría que no saliera ninguno, que para eso tengo el manejador global de excepciones. Pero nada, siguen saliendo a veces, provocados por estos componentes añadidos de mi aplicación (fast report, etc).

¿Como puedo hacer para bloquearlos todos? Los mensajes que se muestran al usuario sólo los quiero dar yo.
Salu2.
Responder Con Cita
  #2  
Antiguo 09-08-2006
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Yo lo que suelo hacer es. en cada uno de los Funciones o procedimientos que realizo manejo el Try Except, de manera que si el error es lanzado por alguna funcion que se llama desde dicho procedimiento o funcion que de siempre contenido.

Porque muchas veces el error no se genera en la aplicacion principal y si en algun objecto o componente del proyecto.
Responder Con Cita
  #3  
Antiguo 09-08-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Aún así, siguen saliendo. Por ejemplo, si la vista previa de fast report da un mensaje de error, aunque ponga el try except el mensaje sale.
Responder Con Cita
  #4  
Antiguo 09-08-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Lo más seguro sea que el mensaje se muestre porque en el código de los componentes está así escrito. Quiero decir, que no sean mensajes de excepción, sino que, por ejemplo, deteca algún fallo y lo muestre.

Aquí un ejemplo, para aclarártelo. Tengo un TEdit donde hay que escribir un código de barras (realmente no lo tengo, es para el ejemplo), y claro, en un cod de barras solo hay números, así que no permito que escriban letras, pues en el evento OnKeyPress pongo esto

Código Delphi [-]
 
begin
If not (Key in ['0'..'9'])then
  begin
  Key:=#0;
  ShowMessage('Caracter introducido no válido');
  end;
end;

Si es eso, la única solución es modificar el código fuente de esos componentes , o bien usar otros (a ser posible, claro).
Responder Con Cita
  #5  
Antiguo 09-08-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola sur-se, y hola a todos:

Cita:
Empezado por sur-se
Me gustaría que todos los posibles mensajes de excepción que yo no tenga controlados, en sus respectivos bloques try-except, no aparezcan al usuario por pantalla.
Para ello, incluyo en mi formulario principal un componente "ApplicationEvents" y le escribo el método OnException, que se supone que tomará aquellas excepciones que no han sido manejadas anteriormente, y vuelco el mensaje de excepción a un fichero de log para posteriormente analizarlo.
Comento: he visto mas de una aplicación que hace esto.... y mi criterio es: Si hay un error, mejor que el usuario lo vea (aunque no lo entienda) y no simplemente "Tragarselo".

Cita:
Empezado por sur-se
El problema es que aún así, siguen saliendo mensajes de excepción en pantalla y en inglés, del tipo "Violación de acceso.." etc. Me gustaría que no saliera ninguno, que para eso tengo el manejador global de excepciones. Pero nada, siguen saliendo a veces, provocados por estos componentes añadidos de mi aplicación (fast report, etc).
Hay creadores de componentes que no se han leido la regla de no manejar las excepciones para las que no tienen una solución... y escriben componentes al estilo:

Código Delphi [-]
try
  CualquierCosa;
except
  on E:Exception do
    ShowMessage(E.Message);
end;

Ante estos, lo único que se puede hacer es no usar dichos componentes.

Cita:
Empezado por sur-se
¿Como puedo hacer para bloquearlos todos? Los mensajes que se muestran al usuario sólo los quiero dar yo.
Salu2.
Lo ya dicho. Es increíble que esto ha ocurrido dentro del propio borland... al menos en el caso de los TMaskEdit. Ignoro si ya corrigieron el problema, dado que desde que descubrí que el dichoso componente mostraba errores al usuario, decidí no usarlo nunca mas...

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 09-08-2006 a las 20:58:44.
Responder Con Cita
  #6  
Antiguo 10-08-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Hola.
No parece que el problema vaya por ahí, pues he revisado los fuentes de los componentes adicionales que uso (eso es lo bueno de comprar componentes con fuentes) y no hay showmessage por ningún sitio. Sólo raise y similares.
Parece que el ApplicationsEvents.OnException no los toma todos.

No quiero dar al usuario mensajes del tipo "Access Violation ... 9f93438.." ni similares que no le sirven para nada. Eso los quiero guardar en un log y luego yo los analizo.
Salu2.
Responder Con Cita
  #7  
Antiguo 10-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo solicitado son los componentes gratuitos LMDTOOLS SE, en su Application.OnException trae un parámetro Cancel para eso mismo.

Otra cosa es que esté de acuerdo con su uso...

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 10-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Juan Antonio
Hay creadores de componentes que no se han leido la regla de no manejar las excepciones para las que no tienen una solución...
A ver, David, repite conmigo:

No manejar las excepciones para las que no tienes una solución...

Otra vez más:

No manejar las excepciones para las que no tienes una solución...

Otra, otra vez más:

No manejar las excepciones para las que no tienes una solución...

Vale. A ver si se te queda para cuando sea menester. Gracias Juan Antonio.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 10-08-2006 a las 12:33:28.
Responder Con Cita
  #9  
Antiguo 10-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo he leído esto muchas veces desde ayer y todavía no acabo de digerirlo. Supongo que tiene toda la razón pero todavía no me queda claro. En el caso del MaskEdit que menciona sí lo veo claro pues el mentado componente no da oportunidad de interceptar la excepción que provoca la validación de manera que para alterar su comportamiento sólo queda derivar una nueva componente.

Seguire meditándolo

// Saludos
Responder Con Cita
  #10  
Antiguo 10-08-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Solo por cuirosidad... ¿estas segur@ que no estas viendo los mensajes de excepción dentro del propio IDE?

Esto porque normalmente, mientras estas ejecutando una aplicación desde el IDE, este captura primero las excepciones y te las muestra, a menos que hayas decidido ignorar algunos tipos de excepción o ignorarlas todas en Tools/Debugger Options/Language Exceptions (<= d7) o en Tools/Options/Debugger Options/Borland Debugers/Language Exceptions (>= d2005)

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 11-08-2006
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Hola. Claro que no. Yo lo utilizo en tiempo de diseño para detectar los errores.
Cuando me refiero a mensajes "no controlados" es en el ejecutable final fuera del Delphi.
En el código de mi programa manejo todas las posibles excepciones con bloques try-except y try-finally según corresponda.
Respecto a ignorar los errores y si salen que el cliente los vea, pues no estoy nada de acuerdo. Prefiero que el cliente, en vez de ver el mensaje "Access Violation 98:4feef94...", vea un mensaje en una pantalla más bonita con botones de notificar la incidencia por email o por fax, etc y un texto del tipo "Se ha producido un error inesperado. Póngase en contacto con bla. ... para notificar la incidencia", o bien loggear el error a un fichero para analizarlo posteriormente. Creo que queda mucho mejor ya que ese mensaje en inglés no aporta nada al cliente.
El problema como digo es que aún teniendo el manejador global ApplicationEvents.OnException, no sé porque consigue salir antes la ventana de errores de windows.
Salu2.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comprimir ejecutables - UPX - Similar. bataola Varios 10 11-11-2005 13:35:29
Creacion de ejecutables karem Varios 8 05-03-2005 19:08:34
Crear ejecutables con mi ejecutable soul6301 Varios 3 19-08-2004 23:48:58
Tamaño de los ejecutables verm83 Varios 2 01-11-2003 23:29:06
Ejecutables con Kilyx Melchy Lazarus, FreePascal, Kylix, etc. 1 14-09-2003 21:59:45


La franja horaria es GMT +2. Ahora son las 18:03:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi