Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
La verdad es que no se como acomodar lo que me pones "ecfisa". Otra cosa, cuando entro en el catch y ejecuto la ultima linea que está dentro del catch ¿ejecuta el return de la funcion? ¿que pasa al salir del catch?
Responder Con Cita
  #2  
Antiguo 18-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por aguml Ver Mensaje
La verdad es que no se como acomodar lo que me pones "ecfisa".
Usa __try inmediatamente seguido a la creación de bmp. Dado que el bloque __finally se ejecutará siempre, evitarás de ese modo el cuádruple llamado a delete bmp que realizas en tu código.

Otro ejemplo:
Código PHP:
{
  
// Se solicita el recurso
  
TStringList *sl = new TStringList;
  
__try {
    try {
      
sl->LoadFromFile(PATH); // ruta al archivo (correcta o errónea)
    
}
    catch(...) {
      
// Se tratan los errores (si los hay)
      
ShowMessage("Error ...");
    }
  }
  
__finally {
    
// Se libera el recurso 
    
delete (sl);
  }

Cita:
Empezado por aguml Ver Mensaje
Otra cosa, cuando entro en el catch y ejecuto la ultima linea que está dentro del catch ¿ejecuta el return de la funcion?
Si.
Podes usar un breakpoint y ejecutar con F7 (o devolver un valor arbitrario) para comprobarlo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 18-12-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Digo yo una cosa, ¿debe una función informar al usuario, directamente, de que se ha producido un error? ¿No debería más bien la función "levantar" la excepción, y, ser quien llame a dicha función quien avise del error al usuario si este lo ve necesario? Claro que podemos tratar excepciones en bloques de código fuera de funciones, y, ahí lo vería más lógico, pero, para mí que una función sólo debe levantar excepciones y no directamente mensajes de error.

¿Cómo lo véis vosotros?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 18-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dec.

Estoy totalmente de acuerdo con eso. El tratamiento de los mensajes de error debería realizarse aparte. En lo personal aprovecho el evento OnException para la personalización de los mismos.

Sólo quería señalarle a aguml, que se puede evitar la redundancia de declaraciones de liberaciones de recursos con la extensión de C++ Builder, __finally.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 18-12-2014 a las 15:41:02.
Responder Con Cita
  #5  
Antiguo 18-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Un ejemplo muuuy resumido ...
Código PHP:
void __fastcall TForm1::MyHandlerExcept(TObjectSenderExceptionE)
{
  
ShowMessage(E->Message "\n ( From MyHandlerExcept )");
};

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
Application->OnException MyHandlerExcept;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
TStringList *sl = new TStringList;
  try {
    
sl->LoadFromFile("*:\uuuuu.uuu"); // forzar el error
  
}
  
__finally {
    
delete sl;
  }
}
... 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Porque no funciona Try Catch?? rogeliogamberro C++ Builder 5 14-12-2010 05:49:41
Dudas sobre funcion COUNT spalma MS SQL Server 1 13-12-2007 15:44:39
Pressing Catch para PS2 Ariel Pérez La Taberna 19 12-10-2007 21:36:40
try y catch en una consulta rodrigodeoz Conexión con bases de datos 8 04-10-2007 18:24:37
dudas sobre la función average expresión de Quicreport Manuel Impresión 4 16-05-2006 23:03:49


La franja horaria es GMT +2. Ahora son las 01:34:04.


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