Wenn ich Folgendes habe, wirklich für jede Zeichenkette, bei der Sie IsNullOrEmpty überprüfen und es leer auftaucht, welche Art von Ausnahmetyp sollte man werfen, und es ist kein Argument für eine Methode ?
Ich habe es immer schwer, Ausnahmetypen auszuwählen, weil es so verdammt viele gibt. Und das ist nur ein Wert aus der web.config und überprüfen, ob SandboxSoapApiUsername leer zurückgegeben.
%Vor%Es hängt wahrscheinlich von der Verwendung / Kontext richtig ab? Nun, ich werde die zurückgegebene Zeichenfolge verwenden, um ein privates Feld für die Klasse festzulegen. Daher muss ich prüfen, ob es sich um eine leere Zeichenfolge früh im Prozess und nicht später handelt (anstatt anderen Code zu verwenden, um die Eigenschaft zu überprüfen, die mit dem privaten Feld übereinstimmt, setze ich ConfigUtility.SandboxSoapApiUsername auf).
Da die Eigenschaften in dieser Klasse, auf die ich jeden ConfigUtility.MEthodName aufstelle, in einer SOAP-Anfrage verwendet werden, dachte ich, dass UriFormatException hier angebracht wäre, obwohl dies nicht der Uri ist?
Das hängt davon ab, wann die Zeichenfolge kommt. Ein Argument könnte eine ArgumentNullException verursachen. Die Konfiguration löst möglicherweise eine ConfigurationException aus (die in diesem Fall anwendbar zu sein scheint). Oder Sie können natürlich Ihre eigenen erstellen.
Methoden in .NET Framework unterscheiden normalerweise zwischen null
und einem ungültigen Wert, der für ein Argument übergeben wird. Ich denke, Sie sollten eine Argument Null Exception werfen, wenn der Wert Null ist und eine Argument Exception, wenn sie ungültig ist.
Wenn der Wert kein Argument ist, aber z. B. während der Initialisierung geladen wird, denke ich, dass eine ungültige Operation Exception angemessen wäre:
%Vor% Sie werden die meiste Zeit damit verbringen, aus der unten stehenden Liste auszuwählen, wenn Sie eine new
-Ausnahme werfen (im Gegensatz zu einem throw
).
1)
Dies ist wahrscheinlich nicht sinnvoll, es sei denn, Sie wählen die Einstellung aus einer app.config oder web.config:
Die ConfigurationException-Ausnahme wird ausgelöst, wenn die Anwendung versucht um Daten zu lesen oder zu schreiben Konfigurationsdatei ist aber erfolglos. Einige mögliche Gründe Dazu kann fehlerhafte XML in enthalten die Konfigurationsdatei, Datei Berechtigungsprobleme und Konfiguration Eigenschaften mit Werten, die nicht sind gültig.
2)
Es ist kein Argument, also macht dies keinen Sinn.
3)
Dies ist der beste der drei, da sich das Objekt in einem ungültigen Zustand befindet. Je nachdem, wie groß Ihre Konfigurationseinstellungen sind, würde ich jedoch lieber eine eigene Exception von System.Exception
erstellen.
Es gibt zwei Denkrichtungen, von denen abgeleitet werden kann - *. Zwei verschiedene Entwickler des Framework-Teams haben unterschiedliche Ansichten geäußert, von denen sie denken, dass Sie sie erben sollten. Ich bleibe bei Jeffrey Richters Ansicht . System.Exception
und ApplicationException
Wenn all die oben genannten Wörter wie woffle klingen, dann könnten Sie einfach eine auswählen, die Ihrer Meinung nach am relevantesten ist von die Liste .
* Sieht so aus, als ob MSDN jetzt seinen Framework-Entwicklern zustimmt, dass ApplicationException ein Designfehler war
Wenn es als Argument übergeben wurde, ArgumentNullException .
Andernfalls hängt es wirklich davon ab, was die Zeichenfolge null
im Zusammenhang mit Ihrer Anwendung bedeutet. Haben Sie keine Angst, benutzerdefinierte Exception-Typen zu definieren, wenn sich im Basis-Framework für das Szenario nicht etwas befindet.
Da es so aussieht, als wäre etwas nicht richtig konfiguriert, würde ich System.Configuration.ConfigurationErrorsException vorschlagen.
Hinweis: Verwenden Sie nicht System.Configuration.ConfigurationException . Es ist eine ältere Version und wurde veraltet.
Hinweis 2: Obwohl ich 90% sicher bin, dass es sich um einen fehlenden Konfigurationswert handelt, werfen Sie eine ArgumentException oder ArgumentOutOfRangeException aus, wenn ein Methodenparameter fehlt .
Tags und Links .net c# exception-handling error-handling