【问题标题】:Looking for a clearer Carp::croak()寻找更清晰的 Carp::croak()
【发布时间】: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


    【解决方案1】:

    我没有让croak 添加来电者信息,而是让我的记录器来做。 Log4perl 让我设置我想记录的消息的格式。 croak 完成了它的工作,记录器让我可以看到发生了什么。

    【讨论】:

      【解决方案2】:

      一种标准技术是不断生成简单的异常,并仅在需要时通过从命令行加载Carp::Always::Color 将它们转换为堆栈跟踪。

      【讨论】:

        猜你喜欢
        • 2018-03-20
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 2023-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多