我最近注意到我将__PACKAGE__
和子/方法名称添加到大多数croak()
的邮件中,因为它可以更轻松地跟踪错误。所以我开始编写一个_croak()包装器,默认添加它(使用caller(1)
)。
E.g。
sub _croak {
my ($msg) = shift // '';
$msg = (caller 1)[3].': '.$msg
unless ref $msg;
Carp::croak($msg);
};
现在每个(文本)异常都归因于我的模块被误用(例如,传递了错误的参数),和到模块本身。
问题是:这是否有标准的模块/技术? (完全堆栈跟踪aka confess()在大多数情况下都是过度的)。