In Perl, you also have to handle the condition of a runtime error which is not an object
I believe that the try block is where the memory leak issues usually show up, since that is where the bulk of your working code is. But why throw catch away too?
sub catch (&) {
if ($@) {
my ($catch) = @_;
my $e = $@;
$e = My::Base::Exception->new($@)
unless (ref($@) && UNIVERSAL::isa($@, "My::Base::Exception
+"));
$catch->($e);
}
}
eval {
die "test";
};
catch {
my $e = shift;
if ($e->isa('IOException')) {
# ...
}
else {
print $e;
}
};
I know chromatic would be upset that I am using UNIVERSAL::isa, but it will avoid your problem with using Scalar::Util::blessed, and as long as you don't use any other classes that override isa you should be okay.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|