Projekt

Allgemein

Profil

Fehler #493

Cannot rethrow string ... bei Fehler in der Kreditoren-Transaktion

Von Jan Büren vor fast 3 Jahren hinzugefügt. Vor fast 2 Jahren aktualisiert.

Status:
Gelöst
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
-
Beginn:
01.03.2022
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:

Beschreibung

Wenn Fehler im Transaktionsbereich auftreten (hier, bei einer Kreditorenbuchung), kommt die eigentliche Fehlermeldung nicht an.

Mit dieser Änderung in SL/DB.pm geht es dann:

@ -143,7 +143,8 @ sub with_transaction {
if ($error->isa('SL::X::DBError')) { # gobble the exception
} else {
- $error->rethrow;
+ # $error->rethrow;
+ die $self->error;
}

Das Framework kommt aus einem Kundenprojekt SL::X, vielleicht fehlt hier was oder Sven und Moritz sind aus Versehen kollidiert.

Zugehörige Revisionen

Revision 6d8c402c (diff)
Von Bernd Bleßmann vor fast 2 Jahren hinzugefügt

SL::DB: Exception: kein rethrow auf SL::Locale::String-Objekte (t8)

Behebt #493 (redmine)

Revision 9c01bef6 (diff)
Von Bernd Bleßmann vor fast 2 Jahren hinzugefügt

SL::DB: Exception: kein rethrow auf SL::Locale::String-Objekte (t8)

Behebt #493 (redmine)

(cherry picked from commit 6d8c402cea10eae20890d839440cacd8eda8a48d)

Historie

#1

Von Bernd Bleßmann vor fast 2 Jahren aktualisiert

Das Problem ist, wenn in einer Transaction ein Fehler geworfen wird, dessen Text mit t8 übersetzt ist.
In with_transaction wird geprüft, ob der Fehler ein geblesstes Objekt ist und dann wird das rethrow gemacht.
t8-Objekte sind geblesst, aber das rethrow geht nicht auf diesen. Folgender Patch hilft, evtl. kann das mal jemand prüfen, ob das ok oder Quatsch ist:

     if (blessed $error) {
       if ($error->isa('SL::X::DBError')) {
         # gobble the exception
+      } elsif ($error->isa('SL::Locale::String')) {
+        die $self->error;
       } else {
         $error->rethrow;
       }
     } else {
       die $self->error;
     }

#2

Von Bernd Bleßmann vor fast 2 Jahren aktualisiert

  • Status wurde von Neu zu Gelöst geändert
  • % erledigt wurde von 0 zu 100 geändert

Status geändert durch Changeset kivitendo|6d8c402cea10eae20890d839440cacd8eda8a48d.

Auch abrufbar als: Atom PDF