2017-09-21 4 views
0

Ich würde gerne wissen, ob es eine gute oder schlechte Praxis ist, null zurückzugeben oder stattdessen eine Ausnahme auszulösen.Ist es wünschenswert, null zurückzugeben, wenn die Entität nicht in einem Repository vorhanden ist?

Ich denke, dass Ausnahmen ausgelöst werden sollten, wenn etwas wirklich Ausgefallenes passiert, aber Null zurückgeben ist hässlich, und eine Ebene darüber muss auf Null überprüfen und eine Ausnahme werfen, da eine Id erhalten, die nicht existiert ist in meiner Domain nicht erlaubt.

Wie wird richtig verfahren?

+2

sehen gibt es nicht nur schwarz oder weiß. Siehe "[NullObject Pattern] (https://en.wikipedia.org/wiki/Null_Object_pattern)". – Fildor

+0

Siehe auch https://stackoverflow.com/questions/175532/should-a-retrieval-method-return-null-or-throw-an-exception-when-it-cant-prod was allgemeinere Frage ist, sondern auch geschlossen als opionsbasiert. – HimBromBeere

+0

Wie lautet der Name der Methode? – mjwills

Antwort

2

Meiner Meinung nach ist Null besser als das Auslösen einer Ausnahme, aber das hängt davon ab, wie außergewöhnlich dieser Fall ist, und natürlich von Ihrer Domäne.

Eine schönere Sache ist eine Null object, d. H. Ein Objekt, das dieselbe Schnittstelle implementiert wie das Element, das Sie in Ihrem Repository suchen, aber es hat ein Verhalten, das es angenehmer macht, mit null zu arbeiten.

auf den Null object pattern lesen, oder es in Agile Principles, Patterns, and Practices in C#

+1

_ "Null ist vorzuziehen, anstatt eine Ausnahme auszulösen. Es gibt nichts Außergewöhnliches daran, die Dinge, die Sie suchen, nicht in einem Repository zu finden." _ - Arbeiten Sie am selben Projekt wie OP? Wenn nicht, können Sie das nicht wissen. _ "da das Abrufen einer ID, die nicht existiert, in meiner Domäne nicht erlaubt ist" _ - Also * wenn * eine nicht existierende ID nachschlagen würde, würde dies auf einen Codierungsfehler oder Fehler in einer Geschäftslogik hinweisen, würde dann eine Ausnahme geworfen völlig gerechtfertigt sein (wer und wo wirft es ist jedoch umstritten). – Fildor

+2

Guter Punkt. Natürlich gibt es Fälle, die nicht außergewöhnlich sind. Ich werde diese Aussage aufhellen. – Fontanka16

Verwandte Themen