perl - 当 Perl 中发生不好的事情时,是 croak() 还是 die() 更好?

标签 perl error-handling coding-style perl-critic

perlcritic提示下面的代码,一些工作得很好的样板 DBI 东西,应该 croak而不是die :

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

所有这一切,虽然 die 似乎对我来说工作得很好。

我认为对于一个武士 Perl 战士来说,当事情出错时,呱呱叫比实际死亡更不光荣。笑话分开

为什么我应该呱呱而不是

不注意会有什么后果perlcritic's建议?

最佳答案

来自http://www.perlmonks.org/?node_id=685452

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.

在这种情况下,错误(与数据库的连接错误)与调用者无关,而与建立连接的线路有关,因此我将使用 die

关于perl - 当 Perl 中发生不好的事情时,是 croak() 还是 die() 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156391/

相关文章:

perl - 哪本书对 DBIx::Class 的讨论最好?

Perl Mechanize 绕过证书验证但遇到身份验证/登录

grails - Grails exceptionHandler是否可以支持以下错误处理流程

c++ - 以下是C++单例实现吗?

C++,如果我需要它,我是否应该#include *和*它包含的其他东西?

java - 正确使用 JavaFX setUserData?

Perl 获取单个散列本身的散列键值计数

perl - 为什么 Perl 的 MIME::Lite 失败并显示 "SMTP data() command failed: 2.1.5 ... Recipient ok"?

oracle - 使用 pl/sql 过程记录错误并处理异常

excel - 子间误差线