[Madrid-pm] Excepciones "singleton"

DervishD bugs en dervishd.net
Lun Abr 9 07:47:34 PDT 2007


    Hola :)

    Esta vez seré breve: para simplificar el uso, me gustaría que las
clases de excepciones que me estoy haciendo no fuesen instanciables
directamente, sino que la única forma en que se pudieran usar es con
"throw" para crearlas y lanzarlas y con "catch" para atraparlas (y por
supuesto, una forma de acceder a la información que la excepción lleve).

    Había pensado en hacer las clases no instanciables o bien que sólo
existiera una instancia, pero en el primer caso necesitaría manejar las
instancias yo dentro de la clase (para poder devolver la información
asociada a la excepción en el "catch") y en el segundo podría tener
problemas si algún día necesito usar estas excepciones en una aplicación
multithread.

    ¿Alguien me podría decir si se me está escapando algún problema
obvio si la única forma de crear una excepción es usando "throw"? El uso
sería algo así:

    eval {
        ...
        Exception::Some->throw(...);
        ...
        Exception::Other->throw(...);
    }

    if (my $exception_data_ref = Exception::Some->catched) {
        ...
        ...
    }   

    en lugar de permitir cosas como esta:

    eval {
        ...
        my $exception = Exception::Some->new(...);
        ...
        $exception->throw;
        ...
        Exception::Other->throw(...);
    }

    if (my $exception_data_ref = Exception::Some->catched) {
        ...
        ...
    }

    Personalmente prefiero lo primero, pero no sé si se me escapará algo
:????

    Muchas gracias, como siempre, y sí, ya sé que hay un millón de
módulos que hacen cosas de excepciones pero prefiero hacerlo a mi modo
;)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
It's my PC and I'll cry if I want to... RAmen!


Más información sobre la lista de distribución Madrid-pm