Perl 如何限制DBIx::Error中的堆栈跟踪?
Perl模块可以在PerlPerl 如何限制DBIx::Error中的堆栈跟踪?,perl,exception,error-handling,dbi,Perl,Exception,Error Handling,Dbi,Perl模块可以在PerlDBI中的HandleError中使用 我想知道是否有一个选项可以将一些参数传递给 深入到底层 . 那是因为我们用了一些 长字符串作为函数调用中的参数。如果我现在打电话给 DBIx::Error->stack\u trace方法,我们的日志正在爆炸 Devel::Stacktrace知道参数no_args和max_arg_length 非常适合我们的需要。但是,他们是如何深入研究的呢 StackTrace软件包 模块实际维护人员的电子邮件-abraxxa@cpan.or
DBI
中的HandleError
中使用
我想知道是否有一个选项可以将一些参数传递给
深入到底层
. 那是因为我们用了一些
长字符串作为函数调用中的参数。如果我现在打电话给
DBIx::Error->stack\u trace
方法,我们的日志正在爆炸
Devel::Stacktrace
知道参数no_args
和max_arg_length
非常适合我们的需要。但是,他们是如何深入研究的呢
StackTrace软件包
模块实际维护人员的电子邮件-abraxxa@cpan.org-好像坏了
有没有人能提供一些有用的提示?我的意思是:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use DBIx::Error;
use TryCatch;
try {
my $dbh = connectDatabase();
doSomeThingWithDatabase($dbh, "i am a really long parameter and will not be shown complete in any logs");
} catch (DBIx::Error $e) {
print "database error: " . $e->message . "\n"
. "Trace: " . $e->stack_trace
. "\n";
}
sub connectDatabase {
my $dbh = DBI->connect($dsn, $user, $pass);
$dbh->{ShowErrorStatement} = 1;
# V1: works, but shows the full parameter
#$dbh->{HandleError} = DBIx::Error->HandleError;
# V2: works, but the stack_trace_args parameter gets ignored
$dbh->{HandleError} = DBIx::Error->HandleError(stack_trace_args => [no_args => 1]);
# V3: Any suggestions ????
return $dbh;
}
sub doSomeThingWithDatabase {
my ($dbh, $reallyLongParameter) = @_;
$dbh->do("selec foo from bar");
}
DBIx::Error的作者看起来是:Michael Brown#dbic中的人也非常反应灵敏。它使用引擎盖下作为Trowable的一部分。有一些关于args的文档。由于所有这些都是角色,您最终能够将您想要的参数作为
stack\u trace\u args=>[no\u args=>1]
或类似于DBIx::Error->new
。我已经联系了Michael Brown。他已将该模块的维护工作移交给Alexander Hartmaier。Alexanders的电子邮件似乎被破坏了。DBIx::Error
使用了MooseX::StrictConstructor
,所以我不能传递任何其他参数,对吗?或者我必须以哪种方式传递论点?