Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Errores

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Errores Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: guia de errores Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Leo puedes leer el tema Responder citando

_Leo que se puede hacer para este tema?

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Gracias Responder citando

Gracias gracias gracias... Laughing Laughing Very Happy
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.