| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
goyoko Ens

Registrado: 08 Abr 2003Mensajes: 47
|
Publicado: Vie 27 May, 2005 1:53 pm Asunto: Errores |
|
|
Hola a todos. He visto el uso de la sentencia try y catch. Sin embargo no entiendo como determinan que error quieren que les muestre.
Existe alguna tabla de código para poder asociarlo a la función catch y contener el error que me interesa.
Gracias |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Vie 27 May, 2005 3:04 pm Asunto: |
|
|
Que tal, te paso el texto tal cual del libro de Ian Marteens en donde habla sobre excepciones.
| Cita: |
La sintaxis completa de la instrucción try/catch es un poco complicada, si intentamos
distinguir directamente la clase a la que pertenece la excepción. Para esto hay
que utilizar varias cláusulas catch a continuación de la cláusula try. Por ejemplo:
|
| Código: |
try {
// Instrucciones
}
catch(EDivByZero& E) {
ShowMessage("División por cero");
}
catch(EOutOfMemory&) {
ShowMessage("Memoria agotada");
}
catch(...) {
ShowMessage("Fallo de excepción general");
}
|
| Cita: |
La primera cláusula catch permite trabajar en su interior con el objeto de excepción,
nombrado E, aunque en este caso no se ha aprovechado el objeto para nada. En la
siguiente cláusula, en donde se capturan las excepciones de tipo EOutOfMemory, no se
declara una variable para recibir el objeto de excepción; si no nos interesa trabajar
con dicho objeto, es perfectamente posible. Por último, he ilustrado el uso de una
cláusula para capturar los restantes tipos de excepciones, especificando tres puntos
suspensivos dentro de los paréntesis. Con esta última cláusula perdemos la posibilidad
de trabajar con el objeto de excepciones directamente. La mejor alternativa es
utilizar una cláusula catch con el tipo general Exception al final de la lista de cláusulas
de captura, dado que las excepciones más frecuentes en C++ Builder serán las generadas
por la VCL: |
| Código: |
while (true)
try {
Table1->Open();
break;
}
catch(EDBEngineError& E) {
if (MessageDlg("¿Reintentar?", mtError,
TMsgDlgButtons() << mbYes << mbNo, 0) != mrYes)
throw;
}
catch(Exception& E) {
ShowMessage(E.Message);
break;
}
|
| Cita: |
Hay que tener cuidado con el orden de las cláusulas catch. Si en el algoritmo anterior
invertimos el orden y capturamos primero las excepciones de tipo Exception nunca
recibiremos excepciones en la segunda cláusula, ¡pues todas las excepciones son de
tipo Exception!
Una última regla relacionada con try/catch: si no escribimos una sección de captura
que corresponda a determinado tipo de excepción, esta excepción no se capturará en
el caso de que se produzca, y seguirá su destructivo trayecto por la pila de ejecución
de la aplicación.
|
Nota final: Texto extraido del libro de Ian Marteens..."La cara oculta de C++ Builder" _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
goyoko Ens

Registrado: 08 Abr 2003Mensajes: 47
|
Publicado: Vie 27 May, 2005 3:40 pm Asunto: guia de errores |
|
|
Existe entonces una guia de la códigos de errores que va dentro de la sentecia catch ( )
como por ejemplo: | Código: | catch(EDBEngineError& E) |
O bien una tabla de cadenas o bien se inventa en el momento?
Muchas gracias. |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Vie 27 May, 2005 7:21 pm Asunto: |
|
|
Pues desconozco si exista.... lo que hay que hacer es investigar mas sobre las excepciones de la VCL... ahi tendrán que venir los codigos de error.
Si _Leo lee este post a lo mejor nos pueda echar una mano al respecto.
Saludos. _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
goyoko Ens

Registrado: 08 Abr 2003Mensajes: 47
|
Publicado: Mar 07 Jun, 2005 9:28 pm Asunto: Leo puedes leer el tema |
|
|
_Leo que se puede hacer para este tema?
Gracias. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 08 Jun, 2005 4:54 pm Asunto: |
|
|
En el poster que viene con el Builder hay una lista. Luego con el nombre ya podemos buscar en la ayuda mas detalles sobre cada clase. O bien también mirando en las cabeceras de la VCL, todas las clases que empiezan por E:
 |
|
| Volver arriba |
|
 |
goyoko Ens

Registrado: 08 Abr 2003Mensajes: 47
|
Publicado: Jue 09 Jun, 2005 2:02 pm Asunto: Gracias |
|
|
Gracias gracias gracias...  |
|
| Volver arriba |
|
 |
|