Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Re: CGI Error Handling

by uwevoelker (Pilgrim)
on Dec 11, 2001 at 01:47 UTC ( #130786=note: print w/ replies, xml ) Need Help??

in reply to Re: CGI Error Handling
in thread CGI Error Handling

I like the idea of putting code in eval-blocks, but is this also efficient/state-of-the-art/perlish?

eval { open(FH, $file) or die "NO_OPEN"; $text = join('', <FH>) or die "NO_READ"; close(FH) or die "NO_CLOSE"; } if ($@) { ... }
instead of
open(FH, $file) or &error("NO_OPEN", $file, $!); my $text = join('', <FH>) or &error("NO_READ", $file, $!); close(FH) or &error("NO_CLOSE", $file, $!);
What approach do you find better?

Comment on Re: Re: CGI Error Handling
Select or Download Code
Replies are listed 'Best First'.
Re: Re: Re: CGI Error Handling
by chromatic (Archbishop) on Dec 11, 2001 at 02:02 UTC
    You can (as in "have the potential to be able to") recover in the eval block. Can you recover in your error sub? I find the block more flexible that way, if that's the sort of thing that's necessary.

    (Feel free to drop the leading ampersand. It doesn't add anything in this case, and is often better removed.)

Re: Re: Re: CGI Error Handling
by edebill (Scribe) on Dec 11, 2001 at 10:10 UTC

    In your example, the second option is actually more readable. But if the function call on the left is longer, and you start wrapping things will get pretty ugly. What's more, if you do something like $sth->execute and the transaction fails (e.g. from bad SQL or an RI constraint) $sth->execute will call die() for you - and an eval block is the only way to catch it.

    I prefer to use the same method for something every time - so I go for nothing but eval blocks. Using two different constructs to do the same thing in the same bit of software just makes things harder to maintain. YMMV.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://130786]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2015-11-29 18:09 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (752 votes), past polls