【发布时间】:2012-02-28 14:46:04
【问题描述】:
我最近注意到我在大多数croak() 的消息中添加了__PACKAGE__ 和子/方法名称,因为这样可以更轻松地跟踪错误。所以我开始编写一个 _croak() 包装器,默认添加它(使用caller(1))。
例如
sub _croak {
my ($msg) = shift // '';
$msg = (caller 1)[3].': '.$msg
unless ref $msg;
Carp::croak($msg);
};
现在每个(文本)异常都归因于我的模块被滥用的点(例如传递了错误的参数),和都归因于模块本身。
还有一个问题:是否有一个标准的模块/技术来解决这个问题? (完整的堆栈跟踪又名坦白()在大多数情况下都是矫枉过正的)。
【问题讨论】:
标签: perl