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

Responder a