(Langjähriger Leser von SO, zum ersten Mal eine Frage.
Ich bin ziemlich neu in C#, die in der PHP/Ruby/Python-Welt für viele Jahre gewesen, so entschuldige ich, wenn dies eine dumme Frage ist).
Ich tue einige Wartung auf eine alte C# app, die abstürzt, wenn SmtpClient.Send() fehlschlägt. Aus dem wenig, das ich aus dem MSDN gelesen habe, kann ich den offensichtlichen Weg sehen, um dies zu beheben, aber meine Frage ist auch mit dem allgemeineren Fall betroffen.
Wie in der MSDN:
try {
client.Send(message);
}
catch (Exception ex) {
Console.WriteLine("Exception caught in CreateTestMessage2(): {0}",
ex.ToString() );
}
Das alles erscheint mir sinnvoll, aber ich habe auch immer gedacht, dass man immer dann, wenn man die Möglichkeit eines Fehlers verhindern kann, dies auch tut. Gibt es irgendetwas, das Sie hier tun können (und sollten?), um die Möglichkeit zu verringern, dass Send() Ausnahmen auslöst?
Ich gehe davon aus, dass es Situationen gibt, in denen es unmöglich ist, die Möglichkeit einer Ausnahme zu verhindern, so dass man damit umgehen muss, aber gibt es irgendwelche allgemeinen Stilrichtlinien oder Regeln, an denen sich die Leute orientieren?
Nochmals: Tut mir leid, wenn das eine blöde Frage ist. Ich habe versucht, SO und Google zu suchen, so viel wie ich konnte.
EDIT: Ich habe gerade diese Frage gefunden Bewährte Verfahren für die Verwaltung von Ausnahmen in Java oder C die meine Frage vielleicht ein Stück weit beantworten können.
EDIT2: Danke für die prompte Rückmeldung, unglaublich schnell. Ich habe über das Problem ein bisschen mehr nachgedacht und vielleicht könnte dies weiter zu verfeinern, was ich frage.
Ist es richtig zu sagen, dass bestimmte Ausnahmen, wie SmtpException, wirklich nicht vermieden werden können? Ist es noch richtiger zu sagen, dass es der richtige Stil ist, Ausnahmen wie SmtpException zu verwenden, um Ihnen mitzuteilen, dass bei der Übertragung etwas schief gelaufen ist, und dass Sie damit umgehen können, wie Sie es möchten?
Ich habe das Gefühl, dass ich mit dieser Frage ein bisschen dumm dastehe, aber ich frage, weil alles, was ich lernen kann, gut für mein Selbstvertrauen ist.
1 Stimmen
Ohne zu wissen, was die Ausnahme(n) sind, ist es schwierig, Ihre Frage zu beantworten. Es sieht so aus, als gäbe es 6 verschiedene Ausnahmen, die ausgelöst werden können. Sie könnten Ihre Eingabe validieren, um jeden möglichen Typ zu verhindern, oder nur diejenigen abfangen, die Sie behandeln können.