1
'eval'块捕获'死亡'尝试。但在下面的代码中,它未能捕捉到“未初始化值”异常。perl eval没有捕获错误
Perl代码 -
#!/usr/bin/perl
package poc::template;
use strict;
use warnings;
use Log::Log4perl;
my $log_conf = "../conf/log4perl.conf";
Log::Log4perl::init($log_conf);
my $logger = Log::Log4perl->get_logger();
sub doSome {
$logger->info('doing something');
my $add = $ARGV[0] + 4;
}
#main
$logger->info('start');
eval { doSome(); };
if ([email protected]) {
$logger->info('error');
}
$logger->info('stop');
这里是日志的conf -
log4perl.rootLogger = DEBUG, SCREEN
log4perl.appender.SCREEN = Log::Log4perl::Appender::Screen
log4perl.appender.SCREEN.stderr = 0
log4perl.appender.SCREEN.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.SCREEN.layout.ConversionPattern = %d [%M:%L] %p %F{2} - %m%n
这里是脚本输出 -
2013/02/03 16:47:02 [main:::18] INFO template\POCTemplate.pl - start
Use of uninitialized value $ARGV[0] in addition (+) at /POCPerl/template/POCTemplate.pl line 14.
2013/02/03 16:47:02 [poc::template::doSome:13] INFO template\POCTemplate.pl - doing something
2013/02/03 16:47:02 [main:::23] INFO template\POCTemplate.pl - stop
应该不是这个eval块捕获该异常?
你为什么认为这是一个例外? – melpomene
是的,我把这个警告视为例外。我的错。 –