GeneQ GeneQ - 3 months ago 9
Perl Question

Is it better to croak() or to die() when something bad happens in Perl?

perlcritic complaints that the following code, some boilerplate DBI stuff that works perfectly fine, should

instead of

# Connect to database
my $db_handle = DBI->connect( $url, $user, $password ) or die $DBI::errstr;

All this, while die seems to work fine for me.

I would think for a samurai Perl warrior, croak is less honorable than actually die when things go awry. Jokes apart

Why should I
instead of

What are the consequences of not heeding perlcritic's advice?



You use die when the error is something you or your code didn't do right. You use croak when it's something your caller isn't doing right. die "error: $!" indicates the error is on the line where the error occured. croak "error: $!" indicates the error is on the line where the caller called your code.

In this case, the error (connection error to DB) has nothing to do with the caller and everything to do with the line making the connection, so I would use die.