Error-handling Question

From: Unknown Sender (bogus_at_nntp.perl.org)
Date: 12/15/03


Date: Mon, 15 Dec 2003 12:57:32 -0500
To:	dbi-users@perl.org

Howdy,

If I'm handling errors with
eval {} if ($@) {}
constructs, is there any hidden gotcha to grouping several statements in a
single eval if I want any errors handled identically? For instance, can I wrap
an execute and its fetches into one eval, as below, or is this something I
should be wary of?

Paul

# group an execute and its fetches into one eval
eval {
    $sth->execute();
    while (my $ref = $sth->fetchrow_arrayref()) {
          print OUT join("\t", @$ref), "\n";
          }
    };
if ($@) {
    $dbh->rollback();
    close(OUT);
    print "Error retrieving data\n";
    exit();
    }

# wrap the execute and each fetch individually
eval {
    $sth->execute();
    };
if ($@) {
    $dbh->rollback();
    close(OUT);
    print "Error retrieving data\n";
    exit();
    }

while (1) {

    my $ref;

    eval {
         $ref = $sth->fetchrow_arrayref();
         };
    if ($@) {
         $dbh->rollback();
         close(OUT);
         print "Error retrieving data\n";
         exit();
         }

    print OUT join("\t", @$ref), "\n";

    }