Thread Error for Standardlibrary? (2 answers)
Opened by defun at 2008-08-15 20:51

defun
 2008-08-17 01:31
#113594 #113594
User since
2008-07-18
28 Artikel
BenutzerIn
[default_avatar]
Ich meine sowas wie
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $status = catch
{
   my $result;
   my $ottoStatus = catch {$result = otto()};
   doSomethingWith($ottoStatus) if $ottoStatus;
   error("Wrong number of otto\n") unless $result == 4;
   doAnything();
};
doSomethingWith($status) if $status;


Inzwischen hat sich der Knoten in meinem Kopf gelöst und mir ist klar, dass man das gewünschte Verhalten mit einem Stack erreicht:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package ErrorHandling;
our @RecordedErrors;
sub error
{
   $RecordedErrors[-1] = [@_];
   die;
}
sub catch(&)
{
   my $code = shift;
   push @RecordedErrors, 0;
   eval {$code->()};
   return pop @RecordedErrors;
}

View full thread Error for Standardlibrary?