繁体   English   中英

如何正确处理 Perl 中的错误

[英]How to correctly handle errors in Perl

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

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

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

我认为您正在使用 Windows 系统进行开发。 如果是这样,您可以尝试在脚本中添加以下代码,该代码将在脚本退出之前显示:“Press any key to continue...”。

END { system 'pause' }

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

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

无论如何,在我看来,像这样定义dieAfterDelay function 会更好:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM