Thread die() in DESTROY() (5 answers)
Opened by sid burn at 2009-05-29 00:41

sid burn
 2009-05-29 00:41
#122050 #122050
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Hi,
ich bin zufällig auf folgendes gestoßen. Nämlich das ein die() Aufruf in einer DESTROY() Methode nicht zum Programmabruch führt. $@ wird allerdiengs gesetzt.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
    package Error;
    use strict;
    use warnings;
    sub new { bless {}, $_[0] }
    sub DESTROY {
        warn "NEIN!\n";
        die { error => "NEEEEEEEEEEEIN!" };
        warn "NEIN2!\n";
    }
}

{
    my $error = Error->new();
    print "ja\n";
}

print "Dürfte nie erscheinen!\n";
if ( $@ ) {
    print $@->{error}, "\n";
}


Bei der Ausgabe sehen wir dann auch "Dürfte nie erscheinen!" sowie "NEEEEEEEEEEEIN!". Weiß jemand zufällig die Hintergründe warum dies so ist? Und gibt es auch einen Weg wie man einen Aufruf von die() Sterben lassen kann? Bzw. viel wichtiger ich würde auch wollen das man darum ein eval{} machen kann. Und das wenn ein Objekt bereinigt wird es auch eine Exception werfen kann. Ist das anscheind überhaupt nicht Möglich? Weiß jemand näheres?
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread die() in DESTROY()