Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1e283ebe

Von Bernd Bleßmann vor mehr als 2 Jahren hinzugefügt

  • ID 1e283ebea5f8104de45bab684a9168b8e6187605
  • Vorgänger 1570b866
  • Nachfolger a3a9ebcd

SL::File: save/delete: DB-Fehler nicht verschlucken

with_transaction setzt SL::DB->client->error oder wirft eine
Ausnahme (je nach Fehler im eigentlichen Transaktons-Code).

Wenn die ein eval drum ist, dann kann wird ein Rose-DB-Fehler nicht
erkannt, nur eine Ausnahme im Transaktions-Code.

Unterschiede anzeigen:

SL/File.pm
6 6

  
7 7
use SL::File::Backend;
8 8
use SL::File::Object;
9
use SL::DB;
9 10
use SL::DB::History;
10 11
use SL::DB::ShopImage;
11 12
use SL::DB::File;
......
128 129
  my ($self, %params) = @_;
129 130
  die "no id or dbfile in delete" unless $params{id} || $params{dbfile};
130 131
  my $rc = 0;
131
  eval {
132
    $rc = SL::DB->client->with_transaction(\&_delete, $self, %params);
132
  SL::DB->client->with_transaction(sub {
133
    $rc = $self->_delete(%params);
133 134
    1;
134
  } or do { die $@ };
135
  }) or do { die SL::DB->client->error };
135 136
  return $rc;
136 137
}
137 138

  
......
184 185
  my ($self, %params) = @_;
185 186

  
186 187
  my $obj;
187
  eval {
188
    $obj = SL::DB->client->with_transaction(\&_save, $self, %params);
188
  SL::DB->client->with_transaction(sub {
189
    $obj = $self->_save(%params);
189 190
    1;
190
  } or do { die $@ };
191
  }) or do { die SL::DB->client->error };
191 192
  return $obj;
192 193
}
193 194

  

Auch abrufbar als: Unified diff