In der Auction Example habe ich sowohl ctx.commandFailed(...)
und throw SomeException(...)
gesehen. Gibt es einen guten Grund zu werfen, anstatt die API zu verwenden, und gibt es einen Unterschied zwischen den beiden?ctx.commandFailed vs werfen in persistentEntity
Antwort
Persistente Entity-Befehlshandler und nach persistenten Callbacks sind in try/catch
Blöcke verpackt, wenn eine Ausnahme abgefangen wird, wird es diese Ausnahme an ctx.commandFailed(...)
für Sie übergeben.
Es gibt einen feinen Unterschied zwischen den beiden zu beachten. Wenn Sie eine Ausnahme auslösen, wird die Verarbeitung des Befehls natürlich sofort gestoppt. Wenn Sie jedoch eine Ausnahme an ctx.commandFailed(...)
übergeben, wird die Ausnahme an den Aufrufer des Befehls zurückgeschickt, jedoch wird die Verarbeitung nicht beendet. Sie könnten theoretisch einige Direktiven zu persistierenden Ereignissen zurückgeben - was eine seltsame Sache wäre. In der Praxis müssen Sie nach dem Aufruf von ctx.commandFailed(...)
ctx.done
zurückgeben.
Im Allgemeinen ist es wahrscheinlich einfacher und sicherer, einfach die Ausnahme zu werfen.
- 1. UL Suffix vs uint32_t werfen
- 2. Exceptions vs Fehlerobjekt in NodeJS werfen
- 3. zulassen VS Ausnahmen Dritten Bibliotheken werfen
- 4. DynamoDB Spring Boot Data Rest "PersistentEntity darf nicht null sein!"
- 5. Spring Data Rest (SDR) -Fehler: PersistentEntity darf nicht null sein
- 6. Federdaten Rest mongodb java.lang.IllegalArgumentException: PersistentEntity darf nicht null sein
- 7. throw Fehler ('msg') vs werfen neuen Fehler ('msg')
- 8. C++ - Makrodefinition werfen Fehler
- 9. Laufzeitausnahme in Closable.close() werfen
- 10. ArgumentNullException in Konstruktor werfen?
- 11. umdeuten werfen in c
- 12. Unterschied zwischen werfen und werfen ex in C# .net
- 13. Wie kann Decimal.Round() werfen Overflow
- 14. C# Operator? und werfen Ausnahme
- 15. Benutzerdefinierte Ausnahmen in Java werfen
- 16. Werfen/Catching AuthenticationException in Dropwizard
- 17. Mehrere Ausnahmen in Java werfen
- 18. Eine Queue in Funktionsparameter werfen
- 19. Eine NullPointerException in C++ werfen
- 20. werfen IOException in einer Methodensignatur
- 21. decodeSampledBitmapFromResource was in Parameter werfen
- 22. Null-pointerException in Timer.Schedule() werfen;
- 23. Nachrichtenausnahme in benutzerdefinierte Eigenschaft werfen
- 24. Einen Fehler in node.js werfen
- 25. Werfen Ausnahme in der Hauptmethode
- 26. CarouselPanel in UWP werfen Ausnahme
- 27. Versuchen, werfen, fangen in Funktionen
- 28. Wie ändert man "Generate Method Stub", um NotImplementedException in VS zu werfen?
- 29. CakePHP: Was/Lib vs/Vendor vs/Plugin geht in sollte
- 30. werfen benutzerdefinierte Ausnahme Informationen sammeln und erneut werfen
Ich dachte, ich verstehe die beiden Optionen als relativ gleich, aber was ich sehe, ist, dass das Auslösen einer Ausnahme zur Protokollierung von OneToOneStrategy führt (angeblich aufgrund des Neustarts des Aktors). Ich sehe nicht die gleiche Protokollierung mit ctx.commandFailed (throwable), so scheint es, dass es materielle Unterschiede gibt. Ich möchte nicht, dass meine Entität jeden Befehl protokolliert, der fehlgeschlagen ist, also habe ich den letzteren ausgewählt. Aber ich frage mich, ob es andere Unterschiede gibt. – dres