A standard way to catch errors is to use
die (or
Carp), in combination with
eval. But since I prefer
Try::Tiny, I'm going to use that.
For example:
#!/usr/bin/perl
use strict;
use warnings;
use Try::Tiny;
$main::errorA = 1;
$main::errorB = 1;
sub methodA {
if ($main::errorA) {
die "Something went wrong in methodA";
}
}
sub methodB {
my ($handle) = @_;
&$handle();
if ($main::errorB) {
die "Something went wrong in methodB";
}
} ## end sub methodB
my $rowHandle = \&methodA;
try {
methodB($rowHandle);
}
catch {
print ("ERROR: " . $_);
}
This results in:
ERROR: Something went wrong in methodA at ./monks24.pl line 12. (monks24.pl being the name of the executable).
This is because errorA is checked before errorB.
If you'd set errorA to 0 (meaning all is well in methodA), you'd get this:
ERROR: Something went wrong in methodB at ./monks24.pl line 20.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.