Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: How do I report an error back to the user of my object?

by bobf (Monsignor)
on Jun 06, 2012 at 15:18 UTC ( #974747=note: print w/ replies, xml ) Need Help??


in reply to How do I report an error back to the user of my object?

Interesting thread. Thanks for launching it.

I wrestled with this recently and, while I know a lot of monks more experienced than me would recommend just die-ing on error, I decided to use a softer approach. I created a few error-handling methods for my class that can be called as follows:

$obj->set_err( 'Something went boom' ); my $msg = $obj->err_str; my $trace = $obj->err_trace; # error msg + full stack trace

The main reasons I went with this approach are:

  1. I didn't want to wrap nearly every method call with an eval
  2. I consider very few of the possible errors to be fatal-worthy
  3. I wanted the methods to have the ability to pass information back to the caller as a warning even if the method succeeds (e.g., over-writing data may or may not be intentional)
In short, I wanted my class to be able to warn (or carp) that something might be fishy (e.g., with the input data) without die-ing all the time, and I didn't want the behavior of the class to overly-influence how I wrote the calling program. (I work in research and it is common to write a one-off to explore an idea; in some cases this means using data that may cause the class methods to throw errors that I want to ignore, and continue processing without having to work around fatal exceptions.)

I realize this may be a choice that goes against accepted conventions, and over time (as my modules mature and become more battle-tested) I may change the way errors are handled. For now, though, this approach works well.


Comment on Re: How do I report an error back to the user of my object?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://974747]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (18)
As of 2015-07-07 17:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls