FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Duda no Try..Except
Señores, tengo un bloco Try..Except, donde yo tengo un codigo para crear un directorio(CreateDir(Path)), pero antes doy un DirectoryExists. Que pasa es, que si fuera posible crear mi Directorio, gustaria que fuera para el bloco Except para yo tratar mi excepccion, pero no esta asi. Si no crea, se va al final, olvidando el Except.
|
#2
|
||||
|
||||
Puedes crear cuantos try except quieras, lo que tienes que ver es que excepción te provoca la no existencia de directorio o más bien crearte tu la excepción. ejemplito:
sacado de la ayuda de Delphi |
#3
|
|||
|
|||
El que yo gustaria es entrar en except siempre que una execpccion fuera encontrada como en mi codigo.
|
#4
|
||||
|
||||
Entonces necesitas es un Try...finally.
Y No "silencies" la excepcion. Siempre es mejor relanzar las excepciones. Es mucho mejor que los errores salgan tan escandalosamente como sea posible porque eso fuerza a hacer los programas mas robustos y ayudan a no tener errores ocultos, como en tu caso: Que garantiza que el error sea por lo que tu piensas? Puede ser un problema de seguridad, o de memoria. O por el frio...
__________________
El malabarista. |
#5
|
||||
|
||||
Juntando lo que te han dicho, yo usaría este:
Utilizando lo que hay en el finally sólo sacas el mensaje cuando exista error. Además siempre compruebas si lo ha habido; Por ultimo, queda el Except, por si ocurre cualquier otro error inesperado, que tengas constancia de él. Tal vez, yo lo organizaría de otra forma, pero mantendría esos elementos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
Cita:
No entiendo bien por qué te han mencionado lo del finally. No le veo relación al asunto. // Saludos |
#7
|
||||
|
||||
Tienes razon roman. Pense era que deseaba que algo siempre se ejcutara, independientemente de si habia o no excepcion.
De todas maneras, la forma de hacer el codigo esta defectuosa. Al enmascarar el error y presuponer la causa se esta dejando un problema latente que luego se podria convertir en un bug dificil de determinar. Existen muchas razones por las cuales un directorio puede o no alterarse.
__________________
El malabarista. |
#8
|
||||
|
||||
Tienes razón. Tal como lo puso originalmente, intenta captar una excepción que nunca va a ocurrir (la de la función CreateDir) y con ello oculta cualquier otra que sí pueda ocurrir.
A mi en particular no me gusta generar excepciones donde no las hay. Si CreateDir devuelve false, actúo en consecuencia ahí mismo, si necesidad de generar una excepción para tratarla cinco líneas abajo. // Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
duda ECO VCL.NET | cmm07 | Varios | 1 | 03-03-2008 19:32:56 |
duda con BDE | ercrizeporta | Conexión con bases de datos | 3 | 29-05-2007 12:20:46 |
Duda | fenther | Varios | 4 | 17-04-2007 20:01:45 |
Una duda | linuz | Lazarus, FreePascal, Kylix, etc. | 3 | 29-09-2004 23:41:27 |
Una duda | condor | Varios | 8 | 02-06-2004 05:33:56 |
|