Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^2: Use of "die" in OO modules

by roman (Monk)
on Jan 21, 2007 at 12:44 UTC ( #595759=note: print w/replies, xml ) Need Help??

in reply to Re: Use of "die" in OO modules
in thread Use of "die" in OO modules

DBI is a module with a very wide audience. So there may be a reason why to support the behaviour of RaiseError = 0. But I with newly developed in house module I don't see any.

I'm going crazy (and rude) when I see my colleagues to write their code like this:

my $dbh = DBI->connect($data_source, $username, $password, \%attr) or +die $DBI::errstr; ... my $sth = $dbh->prepare(...) or die $DBI::errstr;

Why rude? Because

  1. There is usually (always) nothing to do if the DBI method fails but die. So why to bother with return value and clutter you code with unnecessary die
  2. If there would be something to do (probability 0.001%) writing the eval block is as easy as checking the value returned.

And why they write their scripts this way? Because they saw it in DBI perldoc.

This should be probably a topic of a new meditation but that is how the whole Perl works. You start with "There is more than one way how to do it" and then you will need the very clever (no irony) "Perl Best Practices" book to tell you that all the ways but one are wrong.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2019-11-22 02:49 GMT
Find Nodes?
    Voting Booth?
    Strict and warnings: which comes first?

    Results (107 votes). Check out past polls.