Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0bae0979

Von Moritz Bunkus vor etwa 12 Jahren hinzugefügt

  • ID 0bae09796539d19ca18f6567dac468271404e7c3
  • Vorgänger ea974a5a
  • Nachfolger 9b3133b3

RDBO: Exceptions in before_*/after_*-Hooks bubblen

Unterschiede anzeigen:

SL/DB/Object.pm
my ($result, $exception);
my $worker = sub {
SL::DB::Object::Hooks::run_hooks($self, 'before_save');
$exception = $EVAL_ERROR unless eval {
SL::DB::Object::Hooks::run_hooks($self, 'before_save');
$result = $self->SUPER::save(@args);
SL::DB::Object::Hooks::run_hooks($self, 'after_save', $result);
1;
};
SL::DB::Object::Hooks::run_hooks($self, 'after_save', $result);
return $result;
};
......
my ($result, $exception);
my $worker = sub {
SL::DB::Object::Hooks::run_hooks($self, 'before_delete');
$exception = $EVAL_ERROR unless eval {
SL::DB::Object::Hooks::run_hooks($self, 'before_delete');
$result = $self->SUPER::delete(@args);
SL::DB::Object::Hooks::run_hooks($self, 'after_delete', $result);
1;
};
SL::DB::Object::Hooks::run_hooks($self, 'after_delete', $result);
return $result;
};

Auch abrufbar als: Unified diff