ami*_*odi -1 perl exception-handling perl5
我正在更新数据库中的一些记录.并且所有处理都在eval块中完成.问题是即使记录成功更新,我仍然会看到异常被提出.
为了调试异常,我尝试使用Data Dumper打印它,但异常是空白的.
任何人都可以帮我确定这个错误是什么,为什么每次都抛出?
环境详细信息(Perl 5.8和Unix SUSE)
从数据转储器转储:
$VAR1 = '
';
Run Code Online (Sandbox Code Playgroud)
我正在使用各种内部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 );
}
Run Code Online (Sandbox Code Playgroud)
你的代码use warnings;?
您描述的症状表明您在代码中传递die了字符串"\n".我的猜测是,在您的源代码中,您有一条线路正在尝试使用错误消息而死,但您的错误消息未初始化.它可能是这样的
my $error;
if (some_test()) {
$error = 'Some String';
}
if (some_other_test()) {
die "$error\n";
}
Run Code Online (Sandbox Code Playgroud)
如果some_test()通过但未通过,some_other_test()则模具将报告仅包含新行的错误.如果启用了警告,它也会发出警告.
另一种可能性是拼写错误.如果不这样,use strict;则错误变量可能不正确.
my $error = 'Some String';
if ($error) {
#note the typo (transposed ro to or)
die "$erorr\n";
}
Run Code Online (Sandbox Code Playgroud)
没有use strict;这个可能是一个容易错过的错误.
| 归档时间: |
|
| 查看次数: |
351 次 |
| 最近记录: |