如何处理perl中的异常?

时间:2013-01-22 11:33:41

标签: perl clearcase

我正在尝试查找clearcase视图的最后访问日期,perl脚本如下所示。

    @Property = `cleartool lsview -prop $viewtag ` ;

foreach $property (@Property)
    {
    $last_accessed = $property if ( $property =~ /^Last accessed / ); 
            # | cut  -b 15-24 | awk -F '-' '{ print $3"/"$2"/"$1 }'
    }

如果cleartool命令失败,问题是我面临的是perl脚本退出。即使cleartool返回错误,我希望perl继续。

的BRs 摩尼。

2 个答案:

答案 0 :(得分:8)

简单而原始的方法是将可能失败的代码放在eval块中:

eval { @Property = `cleartool lsview -prop $viewtag ` };

这样,即使cleartool失败,你的Perl脚本也会继续。

正确的方法是使用Try::Tiny之类的适当模块。错误将在变量$ _。

中的catch块内可用
try {
    @Property = `cleartool lsview -prop $viewtag `;
}
catch {
    warn "cleartool command failed with $_";
};

答案 1 :(得分:3)

您可以按照“Try::Tiny”中的建议尝试使用“What is the best way to handle exceptions in perl?”。

另一种方法是使用eval cleartool命令。

eval { @Property = `cleartool lsview -prop $viewtag` };
if ($@) {
    warn "Oh no! [$@]\n";
}