尝试die
从eval
.
代码如下;
$status = eval { $self->$func( @{$y->{args}} ); };
在这种情况下$self->$func
,指向一个处理程序,该处理程序在错误时分离到某个页面,如下所示:
sub detach
{
my $self = shift;
my $url = shift;
my @params = @_;
if( $url !~ /^\// )
{
$url = '/' . $self->namespace . '/' . $url;
}
$url =~ s/\sat.*$//;
print STDERR $self->uri . ": Detaching to " . $url . "\n";
die "REDIR:$url";
}
这应该放入"REDIR:$url"
,$@
以便在eval
退出时可用。
然而,相反 Carp.pm 死了,我假设在die
with内部的某个地方
Bizarre copy of ARRAY in sassign at /usr/share/perl/5.10/Carp.pm line 182
环顾四周,有一些建议表明 perl 中存在与死期间堆栈相关的错误(例如http://code.activestate.com/lists/perl5-porters/149248/),但是我担心在这个点我对perl的了解有限,我不确定这是否相关,或者如果是的话该怎么办。:(
有谁知道是否有解决此问题的方法或另一种方法可以将错误字符串从 传回eval
,或者我是否读错了?