4

我在 perl 中有一个 try catch 块

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

当我运行 perl 程序时,出现以下错误

不能在没有包或对象引用的情况下调用方法“try”...

4

3 回答 3

6

Perl 不提供trycatch关键字。要捕获由 引发的“异常” die,您可以设置$SIG{__DIE__}处理程序或使用eval. 块形式优于字符串形式,因为在编译时解析发生一次。

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

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

于 2012-07-11T07:06:31.257 回答
5

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

use Try::Tiny;

try {
  # statement 1
  # statement 2
}
catch {
  print "Error\n";
};
于 2012-07-11T11:46:38.553 回答
0

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

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

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

于 2021-02-18T03:20:32.867 回答