如果在它使用的模块中抛出异常,我怎么能阻止我的perl脚本终止?

前端之家收集整理的这篇文章主要介绍了如果在它使用的模块中抛出异常,我怎么能阻止我的perl脚本终止?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个perl脚本,使用标准的net :: HTTP代码和perl 5.8.8.
我遇到了一个错误情况,当我调用时服务器返回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 $@;

有关详情,请参见http://perldoc.perl.org/functions/eval.html.

猜你在找的Perl相关文章