我正在更新数据库中的一些记录。并且所有处理都在eval块中完成。 问题是即使记录成功更新,我仍然会看到异常被提出。
要调试异常,我尝试使用Data Dumper打印它,但异常是空白的。
任何人都可以帮我确定这个错误是什么,为什么每次都会抛出?
环境详细信息(Perl 5.8和Unix SUSE)
从数据转储器转储:
$VAR1 = '
';
我正在使用各种内部API来更新这些记录..所以我修改了我的代码看起来类似:
sub main{
eval{
DB->updateRecord($value)
};
if($@){
Mail->SendMail(__PACKAGE__,$@):
}
}
package DB;
sub updateRecord{
my ($self , $value) = @_;
my $query = "update set column_value = $value ..<update query> ";
API->processQuery($query );
}
答案 0 :(得分:7)
您的代码是use warnings;
吗?
您描述的症状表明您在代码中传递了die
字符串"\n"
。我的猜测是,在您的源代码中,您有一条线路正在尝试使用错误消息而死,但您的错误消息未初始化。它可能像
my $error;
if (some_test()) {
$error = 'Some String';
}
if (some_other_test()) {
die "$error\n";
}
如果some_test()
通过但some_other_test()
失败,则骰子将报告仅包含新行的错误。如果启用了警告,它也会发出警告。
另一种可能性是拼写错误。如果您没有use strict;
,则错误变量可能不正确。
my $error = 'Some String';
if ($error) {
#note the typo (transposed ro to or)
die "$erorr\n";
}
如果没有use strict;
,这可能是一个容易错过的错误。