[编辑] - 事后看来,这个问题被误导了。我没有删除它,因为它是Perl::Critic错误使用 eval和正确批评的一个很好的例子。
Perl Critic 对以下代码提出以下批评:
eval 的返回值未测试。您不能依赖 的值
$@/$EVAL_ERROR
来判断 eval 是否失败
my $Jet = Win32::OLE->CreateObject('DAO.DBEngine.36')
or croak "Can't create Jet database engine.";
my $DB = $Jet->OpenDatabase($DBFile)
# code omitted for the sake of brevity
# perl script writes results to Access db via an append query
$DB->Execute( $SQLquery, 128 ); #128=DBFailOnError
eval {$err = Win32::OLE->LastError()} ; #<<<< PROBLEM LINE SEE FEEDBACK BELOW
if ( $err){
print $ERROR "WIN32::OLE raised an exception: $err\n";
Win32::OLE->LastError(0); # this clears your error
}
我的想法是我eval
用来检测错误对象的存在并在Win32:OLE
模块上检测错误并报告它。
我可以安全地忽略批评吗?