perl – 为什么我在控制台上看到DBI错误,即使我已将DBI调用包装
发布时间:2020-12-15 23:29:52 所属栏目:大数据 来源:网络整理
导读:我有一个数据库查询,我在eval中运行,以捕获错误.问题是错误消息正在输出到控制台,即使它被捕获.如何阻止错误消息执行此操作,因为我想自己解析它并吐回我自己的消息? my $dbh = DBI-connect('dbi:Pg:dbname=database;host=localhost','user','pass',{RaiseEr
我有一个数据库查询,我在eval中运行,以捕获错误.问题是错误消息正在输出到控制台,即使它被捕获.如何阻止错误消息执行此操作,因为我想自己解析它并吐回我自己的消息?
my $dbh = DBI->connect('dbi:Pg:dbname=database;host=localhost','user','pass',{RaiseError => 1} ); eval{ $sth = $dbh->prepare($sql); $sth->execute; }; if($@){ #Do my parse/print stuff here I know } 解决方法
您可以指定’
PrintError =>您的连接呼叫中的0′(或使用
HandleError):
my $dbh = DBI->connect('dbi:Pg:dbname=database;host=localhost',$user,$passwd,{ PrintError => 0,RaiseError => 1,}); 或者设置每个语句句柄: my $sth = $dbh->prepare("SELECT * from my_table"); $sth->{PrintError} = 0; $sth->execute(); ...etc. 另外,不要依赖$@来表示错误.使用eval的更好方法是: my $result = eval { ... $sth->...etc. 1; } unless ($result) { # Do error handling..log/print $@ } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |