我在perl中有一个try catch块
try {
//statement 1
//statement 2
};
catch Error with
{
print "Error\n";
}
当我运行perl程序时,我收到以下错误
无法在没有包裹或对象参考的情况下调用方法“尝试”...
答案 0 :(得分:5)
Perl不提供try
或catch
个关键字。陷阱"例外" 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。