[英]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.