无法调用方法"尝试"没有包或对象引用

时间:2012-07-11 06:59:10

标签: perl try-catch

我在perl中有一个try catch块

try {
    //statement 1
    //statement 2
};
catch Error with
{
    print "Error\n";
}

当我运行perl程序时,我收到以下错误

  

无法在没有包裹或对象参考的情况下调用方法“尝试”...

3 个答案:

答案 0 :(得分:5)

Perl不提供trycatch个关键字。陷阱"例外" die引发,您可以设置$SIG{__DIE__}处理程序或使用eval。块形式比字符串形式更受欢迎,因为解析在编译时发生一次。

eval {
    // statement 1
    // statement 2
}
if ($@) {
    warn "caught error: $@";
}

有各种模块提供更传统的try类功能,例如Try::Tiny

答案 1 :(得分:5)

您可能需要其中一个CPAN模块,例如Try::Tiny

use Try::Tiny;

try {
  # statement 1
  # statement 2
}
catch {
  print "Error\n";
};

答案 2 :(得分:0)

您可能还想尝试一下 Nice::Try。它非常独特,提供了与其他编程语言一样的 trycatch 块的所有功能。

它支持异常变量赋值、异常类、使用 finally 块清理、嵌入式 try-catch 块。

完全披露:我在 Nice::Try 时开发了 TryCatch got broken