如何使用TryCatch.pm从catch块中的try块打印错误消息?

时间:2016-01-15 18:11:44

标签: perl try-catch

我的脚本中有一个try-catch块(来自TryCatch模块),我想从try块中的catch块打印错误消息。似乎错误变量是try块的本地:

use TryCatch;
...
try {
        some command;
    }
    catch {
        print "some command failed due to: $@";
        # error variable $@ is not visible here
        return;
    }

还有其他办法吗?

1 个答案:

答案 0 :(得分:4)

根据documentation,您展示的代码应该有效。但是,有一个longstanding bug导致它失败。

您可以使用catch块中的签名绕过它:

use strict;
use warnings;
use 5.010;

use TryCatch;

try {
    die 'foo';
}
catch ($err) {
    say "Caught $err";
}

输出:

Caught foo at ./bar line 10.

但是,根据outstanding bugs的数量,我建议改为使用Try::Tiny