Revision 1e283ebe
Von Bernd Bleßmann vor mehr als 2 Jahren hinzugefügt
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
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.