Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2004
JorgeBec JorgeBec is offline
Miembro
 
Registrado: jul 2003
Posts: 159
Poder: 21
JorgeBec Va por buen camino
Algo de Excepciones

Que tal Comunidad! La pregunta es sencilla, Para hacer un sistema estable deberas proteger con las sentencias Try...Except y Try...Finally, pero mi pregunta es como saber que codigo proteger??? donde encuentro una clasificacion de los distintos tipos de excepciones que podemos manejar???

espero me explique con la pregunta. agradecere sus respuestas...
Responder Con Cita
  #2  
Antiguo 17-07-2004
Pandre Pandre is offline
Miembro
 
Registrado: may 2003
Ubicación: San Bartolomé de la Torre, Huelva (España)
Posts: 35
Poder: 0
Pandre Va por buen camino
Qué tal?

Lo mejor es que te documentes al respecto, pues es algo extenso y si encuentras la información en PDF o un libro mejor que mejor.

Este mensaje es simplemente para decirte, que para empezar podrías proteger con TRY ... EXCEPT o FINALLY aquel código en el que se crean o destruyen objetos, donde se asignan valores NIL a variables objeto, donde se convierten tipos de datos distintos, etc...

Son algunos de los bloques de código propensos a dar excepciones y conviene tratarlos.

Pero lo dicho, documentate al respecto que será lo mejor...

Suerte
__________________
Un cordial saludo.

~~~~~~~~~~~~~~~~~~
José A. Gómez Martín
pandre@arsystel.com
Responder Con Cita
  #3  
Antiguo 19-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Obligatoriamente, cada vez que se reserva memoria, (creación de un objeto, una estructura dinámica o un puntero) ha de asegurarse que esta sea liberada. También cuando se hace uso de recursos del sistema.

Por ejemplo:

Código Delphi [-]
Var
  strs : TStringList;

Begin
  strs := TStringList.Create;
  try
    Sentencias;
  finally
    strs.Free;  // la memoria se libera, aún cuando ocurran errores
  end;
end;

var
  p : PunteroAAlgo;

Begin
  p := new(TipoDeDato);
  try
    sentencias;
  finally
    dispose(p);  //la memoria se libera aún cuando ocurran errores
  end;
end;

Luego, también es importante "proteger" aquellos bloques en los que interesa tratar algún error específico. Esto ya depende de las necesidades y objetivos de la aplicación y el nivel de conocimiento del programador. Por ejemplo, si se abre un archivo, hay que considerar, por lo menos, la posibilidad de que ese archivo no exista, y luego decidir que hacer en este caso (informar al usuario, crear el archivo, abortar el proceso, etc).

Por regla general, solo se tratarán aquellas excepciones para las que se tenga una solución, y se dejarán sin tratar todas las demas. También las excepciones se tratarán siempre tan cerca como sea posible al lugar donde se generan.

En el caso del archivo:

Código Delphi [-]
Var
  f : TFileStream;

Begin
  try
    f := TFileStream.Create('archivo.dat', fmOpenRead);
  except
    on EFileNotFound do 
      f := TFileStream.Create('archivo.dat', fmCreate);
  end;
  try
    TrabajamosConElStream;
  finally
    f.Free;
  end;
end;

En este bloque, se trata la excepción EFileNotFound. De esa manera, si el archivo no existe, se crea uno nuevo. Sin embargo, no tratamos otras excepciones (que no sabemos como tratar), tal como EOutOfResources. Si el sistema se ha quedado sin recursos, confiamos que un bloque mas externo tratará la excepción... y si no, en última instancia dejamos que delphi se encargue de ella.

En fin... este es un post ya bastante largo. Espero que de algo sirva tanto rollo.

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
  #4  
Antiguo 19-07-2004
JorgeBec JorgeBec is offline
Miembro
 
Registrado: jul 2003
Posts: 159
Poder: 21
JorgeBec Va por buen camino
Compañeros, Me sirven mucho sus comentarios, he aprendido mucho de este sitio...con respecto al tema, ahorita me mencionan algunas execepciones, donde encuentro una clasificacion de las mismas??? y en que consisten cada una de ellas???, para de acuerdo a mi programa saber que tratar...saludos...
Responder Con Cita
  #5  
Antiguo 20-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Te voy a decir algo, que por lo cual, me pueden censurar en el foro de por vida: Deja que la excepcion ocurra y despues ya sabrás cual has de tratar

Bromas aparte, cuando tratas con un objeto o funcion específica, en la ayuda de Delphi te dice que si no se ejecuta correctamente, lanza tal o cual excepcion, así que, ahí tienes el principio. Como ves, primero has de conocer la documentación muy bien, y saber valorar si la excepcion que se produce "quieres" tratarla, o simplemente dejar que ocurra.

Saludos
Responder Con Cita
  #6  
Antiguo 20-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por Lepe
por lo cual, me pueden censurar en el foro de por vida:
Quien este libre de pecado, que tire la primera piedra...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 00:15:21.


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