I have a perl script, using standard-as-dirt Net::HTTP code, and perl 5.8.8.
I have come across an error condition in which the server returns 0 bytes of data when I call:
$_http_connection->read_response_headers;
Unfortunately, my perl script dies, because the Net::HTTP::Methods module has a “die” on line 306:
Server closed connection without sending any data back at
/usr/lib/perl5/vendor_perl/5.8.8/Net/HTTP/Methods.pm line 306
And lines 305-307 are, of course:
unless (defined $status) {
die "Server closed connection without sending any data back";
}
How can I have my script “recover gracefully” from this situation, detecting the die and subsequently going into my own error-handling code, instead of dieing itself?
I’m sure this is a common case, and probably something simple, but I have not come across it before.
You can use
eval { }to catchdie()exceptions. Use$@to inspect the thrown value:See http://perldoc.perl.org/functions/eval.html for details.