我有一个perl脚本,使用标准的net :: HTTP代码和perl 5.8.8.
我遇到了一个错误情况,当我调用时服务器返回0字节的数据:
我遇到了一个错误情况,当我调用时服务器返回0字节的数据:
$_http_connection->read_response_headers;
不幸的是,我的perl脚本死了,因为Net :: HTTP :: Methods模块在306行有一个“die”:
Server closed connection without sending any data back at /usr/lib/perl5/vendor_perl/5.8.8/Net/HTTP/Methods.pm line 306
当然,第305-307行是:
unless (defined $status) { die "Server closed connection without sending any data back"; }
如何让我的脚本“从这种情况中优雅地恢复”,检测死亡并随后进入我自己的错误处理代码,而不是自己死?
我敢肯定这是一个常见的情况,可能是一些简单的事情,但我之前没有遇到过.
解决方法
您可以使用eval {}来捕获die()异常.使用$@检查抛出的值:
eval { die "foo"; }; print "the block died with $@" if $@;