Okay I can confirm that otherwise is defined (I think)...
I added this to the top of the sub...
try {
my ($k) = 2;
throw sysAssert("test assert");
} catch err with {
my ($ex) = @_;
print "caught by with\n";
dPrt("warn"," with $ex");
} otherwise {
my ($ex) = @_;
print "caught by otherwise \n";
dPrt("warn","OTHERWISE:$ex");
}
die "got here";
I didn't get an error about a call to otherwise, but at the same time, neither the catch err with nor the otherwise got called. The err shouldn't have caught it, since it was intentionally a different exception type. but the otherwise should have from my understanding. instead the exception was uncaught, and simply killed execution... Which may mean I don't understand what otherwise is supposed to do... but
http://search.cpan.org/~shlomif/Error-0.17016/lib/Error.pm
says
otherwise BLOCK
Catch any error by executing the code in BLOCK
When evaluated BLOCK will be passed one argument, which will be th
+e error being processed. The error will also be available in $@.
Only one otherwise block may be specified per try block
So I am pretty sure it should have caught that... but I am not seeing either print statement in either block, nor the die statement. So the exception is not being caught...
thoughts? |