如何正确处理Perl中的错误

时间:2011-07-22 13:02:52

标签: perl file-io error-handling

我正在尝试在打开文件时出现错误时关闭命令提示符。我已经尝试过'die'命令,但是在显示消息后立即关闭命令提示符。我希望能够打印错误消息,等待几秒钟,然后关闭或退出。现在,我可以在关闭提示之前让代码等待,但它从不显示我的错误消息:

open (LOG1, $file1) || (print "\n# Error in opening $file1, make sure it exists! #\n", sleep(3), exit);

3 个答案:

答案 0 :(得分:6)

您误用了逗号运算符 - print不会打印错误消息,而是返回exit()的返回值!请改用分号。

答案 1 :(得分:3)

我认为您正在使用Windows系统进行开发。如果是这样,您可以尝试在脚本中添加以下代码,这些代码将在脚本退出之前显示:“按任意键继续...”。

END { system 'pause' }

答案 2 :(得分:2)

我怀疑sleep没有刷新输出缓冲区,所以这可以解释为什么你没有看到任何打印出来的东西;你可以尝试:

open (LOG1, $file1) || ((print "\n# Error in opening $file1, make sure it exists! #\n"), $|++, sleep(3), exit);

在任何情况下,在我看来,最好定义这样的dieAfterDelay函数:

sub dieAfterDelay {
    my $msg = shift;
    my $delay = shift;
    my $errNo = shift;
    print $msg . "\n", $|++;
    sleep($delay);
    exit($errNo);
}

您可以这样使用:

open (LOG1, $file1) || dieAfterDelay("\n# Error in opening $file1, make sure it exists! #\n", 3, -1);