【发布时间】:2018-05-13 07:14:23
【问题描述】:
有没有办法在脚本的某些部分“关闭”Perl 中的 DBI HandleError 属性,就像可以关闭 RaiseError 一样?
例子:
my $dbh = DBI->connect("DBI:SQLite:dbname=file.db","","",{ PrintError => 0, RaiseError => 0,
HandleError => sub{ Log("ERROR: Something failed in db"); exit 1 } })
or die "Couldn't connect";
for my $table (@db_tables){
$dbh->do("delete from $table")
or do{ Log("ERROR: Delete failed"); next };
Log("Table [$table] content was deleted");
}
exit 0;
在这里,我不希望 HandleError 仅仅因为无法删除其中一个表的内容而终止脚本。我想手动处理错误。
【问题讨论】:
-
查看 Try::Tiny 并考虑将该部分放入“try”块中,然后如果需要,您可以在其上添加自己的错误处理。