Ed Avis wwwwrote:
>
> If LWP::Simple::get() fails it returns undef.  So if you want to check
> for errors you do something like
> 
>     my $got = get($url);
>     if (not defined $got) {
>         # Handle error somehow, perhaps by dying
>     }
>     do_something_with($got);
> 
> But a lot of the time, especially in 'simple' scripts that might use
> this module, you'll want to die() when a page could not be fetched.
> Even in larger programs where some recovery is possible you might
> prefer explicit error handling using die() to throw exceptions and
> eval {} to catch them.
> 
> So it would be useful for LWP::Simple to have a global flag saying
> 'die on error, rather than returning undef'.  This would apply to
> head(), getprint() and the other methods as well as get().  The
> failure message passed to die() could include the URL and any status
> information like the HTTP response code.
> 
> Do you think this is a good idea?  Should I send a patch?

No, I don't think you should.

All of the comparable Perl operations that I know about, including
all the Net:: modules, return a false value if they've failed.
In all these cases you're writing something like

  open my $fh, 'file' or die $!;

If you want to simply die on any attempt to open a file, pipe, net
connection or anything else then you can write:

  sub myopen {
    my $file = shift;
    open my $fh, $file or die $!;
    $fh;
  }

and it doesn't need to be an option for each and every module and
built-in that does something similar.

Rob

Reply via email to