我已经在Perl中覆盖了die
,以便于我的日志框架能够记录消息并在控制台上打印出来。
die
的覆盖代码:
BEGIN{ *CORE::GLOBAL::die = sub {
my ($package, $filename, $line, $subroutine) = caller;
untie *STDERR;
my $message;
foreach my $arg (@_) {
$message = $message.$arg;
}
print STDERR $message;
tie *STDERR, __PACKAGE__, (*STDERR);
logmessage("die",$message,$filename, $line);
#What exit code to pass?
#exit CODE;
}
}
当进程以普通的die方式退出时,我不知道该设置什么退出码。
有没有办法在调用die时找出应该设置什么退出码?
另外,如果能知道Perl中可用的错误代码列表将会很有帮助。
die()
只是抛出一个异常,可以稍后使用eval { ... }
捕获。die()
不应直接终止程序! - amon$SIG{__DIE__}
,看它是否符合您的需求。 - PerlDuck