Hi,

Fielding for opinions. Have a code base where I essentially need Java-style exception handling (try/catch/finally etc.) - so far have used Carp (croak) and eval / if ($@) style reporting / handling but it's reached the point where I need to be able to "filter" for different categories of error and respond appropriately. Also want to avoid using some kind of convention based on the contents of the error message.

For example in calling some object method, which executes a SELECT statement, there could be some kind of fundamental (e.g. the db is down) or there might be something "wrong" with the data selected - an "application logic error". On encountering the application logic error, the process can continue but if the DB is down, the process should die.

Anyway - looking around, Error seems to be the most promising way forward (from this article). From experiments, it seems good but I'm nervous about introducing it because it's a such a fundamental change, and wondering how other people feel about it - stability / gotchas etc.

Some random thoughts / questions;

The conclusion I'm starting to draw is "yes" to throw and "use base qw(Error)" but no to try/catch etc. - rather use eval like;

eval { doSomething(); }; if ( $@ ) { if ( $@->isa('my::own::error') ) { warn("Error occurred but may continue: $@"); } else { # Catch other thrown errors, die, croak etc. die(ref $@ ? $@->stacktrace() : $@); } }

Anyway - opinions / experiences very much appreciated.


In reply to Opinions of Error.pm by harryf

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.