Korrekte Verwendung von ArgumentException?

8

Von dem, was ich gesehen habe, wird ArgumentExceptions normalerweise wie folgt verwendet:

%Vor%

Aber was ist, wenn ich so etwas habe:

%Vor%

Ist das immer noch ein ArgumentException ?

    
Rhs 22.06.2015, 13:16
quelle

2 Antworten

0

Wie der Name schon sagt, ist ein ArgumentException eine Ausnahme für ein Argument. Es bedeutet, dass das Argument irgendwie von Natur aus falsch war.

Die allgemeine Form ist:

%Vor%

Wenn der only mögliche Weg, dass GetUserById fehlschlagen könnte, war, dass etwas inhärent falsch mit dem Wert von idOfUser war, dann wäre das Folgende dasselbe in der Praxis:

%Vor%

Und wenn es aus irgendeinem Grund schneller oder weniger verschwenderisch ist, eine Ressource nach user zu testen als idOfUser vor und if Es gab keine Nebenwirkungen von GetUserById , und Wenn der Unterschied tatsächlich eine Rolle spielte, dann vielleicht wäre die zweite Version eine vernünftige Optimierung des ersten.

Aber das gilt nur, wenn alle obigen if gelten, und es ist dann eine seltsame Art, ein ungültiges Argument zu erkennen, das einen bestimmten Vorteil hat, wenn wir von der Verkapselung von Methoden profitieren, indem wir diese ausblenden Seltsamkeit von allem anderen.

Wahrscheinlich gibt es ein gültiges idOfUser , für das es kein entsprechendes user gab. In diesem Fall war es sicherlich keine Ausnahme für das Argument.

    
Jon Hanna 22.06.2015, 14:15
quelle
3

Der erste

%Vor%

sollte

sein %Vor%

Wenn möglich, sollten Sie ArgumentException nicht direkt ausgeben

  

Die primären abgeleiteten Klassen von ArgumentException sind ArgumentNullException und ArgumentOutOfRangeException . Diese abgeleiteten Klassen sollten anstelle von ArgumentException verwendet werden, außer in Situationen, in denen keine der abgeleiteten Klassen akzeptabel ist.

Für das zweite Beispiel hier Soll ich eine KeyNotFoundException für eine Datenbanksuche auslösen? schlagen sie (in Kommentaren) %Vor%

Sie ist in System.Data definiert: System.Data.ObjectNotFoundException .

    
xanatos 22.06.2015 13:23
quelle

Tags und Links