Lautaro,
    Podria andar pero vas a estar acumulando llamadas en la pila anda
a saber cuantas veces.
    ¿un while(!success) try{f();success=true;}catch(ex){};no te sirve?
    (guai con no hacer un while infinito)

sds

On Nov 17, 2007 8:37 PM, Lautaro Cozzani <[EMAIL PROTECTED]> wrote:
> con recursividad?
>
> teniendo una funcion que adentro llame a la que vos queres capturando
> a la excepcion y en el catch llamas a la primer funcion.
>
> PD: lo escribi todo sin pensar 100%, por ahi estoy diciendo una
> burrada o me estoy olvidando de algo.
>
>
> On Nov 17, 2007 7:47 PM, Francisco Dibar <[EMAIL PROTECTED]> wrote:
> > hola gente, les hago una pregunta:
> >
> > como harian lo siguiente?:
> >
> > Quieren invocar una funcion f, y atrapar distintas excepciones. Al
> > atrapar una en particular, deciden reintentar f.
> > Esto suena muy sencillo, pero si escribo la invocacion a f en el scope
> > del catch para esa excepcion en particular, tengo que reescribir todos
> > los catch de las demas excepciones. La unica forma que encontre de
> > resolver esto es con un goto!
> > Estoy seguro que debe haber una forma mas elegante de resolver esto,
> > pero no se me ocurre.
> >
> > ejemplo:
> >
> > #include <iostream>
> > #include <exception>
> >
> > using namespace std;
> >
> > class e1 : public std::exception
> > {
> > public:
> >     virtual const char* what() const throw() { return "e1"; }
> > };
> >
> > class e2 : public std::exception
> > {
> > public:
> >     virtual const char* what() const throw() { return "e2"; }
> > };
> >
> > void f(int i)
> > {
> >     if (i == 1)
> >         throw e1();
> >     else
> >         throw e2();
> > }
> >
> > int main(int argc, char** argv)
> > {
> >     int i = 1;
> > retry:
> >     try {
> >         f(i);
> >     }
> >     catch(const e1& e) {
> >         cout << e.what() << endl;
> >         static bool catchedOnce = false;
> >         i = 2;
> >         if (!catchedOnce) {
> >             catchedOnce = true;
> >             goto retry;
> >         }
> >     }
> >     catch(const e2& e) {
> >         cout << e.what() << endl;
> >     }
> > }
> >
> > saludos,
> > francisco.
> > _______________________________________________
> > Lista de correo Programacion.
> > [email protected]
> > http://listas.fi.uba.ar/mailman/listinfo/programacion
> >
>
>
>
> --
> Lautaro
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a