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.