my $dbh = $base::dbh; # get a database handle
eval {
# lots of inserts, updates, etc...
};
if ($@) {
my $err = $@;
eval { $dbh->rollback };
# display formatted errors
$base::showerrors(
($base::debug ? $err : "database related error"),
($@ ? " error performing rollback\n"
: " rollback performed successfully\n")
);
}
####
sub dbtry (&@) {
my ($dbtry, $dbcatch) = @_;
local $dbh = $base::dbh;
eval { local $_ = $dbh; &$dbtry };
if($@) {
local $_ = "dbcaught:";
chomp $@;
$_ .= ($base::debug)
? " $@"
: " database related error";
eval { $dbh->rollback };
$_ .= ($@ ? " Error Performing Rollback\n"
: " Rollback Performed Successfully\n");
&$dbcatch;
}
}
sub dbcatch (&) { $_[0] }
####
dbtry {
# lots of inserts, updates, etc...
} dbcatch {
$base::showerrors("error: $_");
}