Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Re: CGI Error Handling

by uwevoelker (Pilgrim)
on Dec 11, 2001 at 01:47 UTC ( [id://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?

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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (9)
As of 2024-03-28 12:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found