You can use eval to catch, and then do alternate tasks:
use warnings; use strict; my $ok = eval { blah() or die "damn thing failed!"; 1; }; if ($ok){ print "success\n"; } else { print "failed, doing something else\n"; } sub blah { # simulate a fail return 0; }
Now, the error will be in $@, but because there are situations where it can be reset before you get to it, it can be risky to do things like this:
eval { blah() or die "failed"; }; if ($@){ ... }
Regarding my first full example above, if an exception is thrown within the eval, it'll set $ok to undef, otherwise if all of the statements execute successfully, the 1 (ie. true) will be returned.
Inside of the else block, you could check to see what the error is:
if ($@ =~ /timeout/){ ... }
...but again, it's not wise to solely rely on that variable in all cases.
In reply to Re: Error handling
by stevieb
in thread Error handling
by snehit.ar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |