Wie in diesem Beispiel:Welche Ausnahme zu werfen, wenn ein Zweig theoretisch unmöglich zu erreichen sein sollte?
public MatchResult GetResult(int home, int away)
{
if (home == away)
return MatchResult.Draw;
else if (home > away)
return MatchResult.HomeWins;
else if (home < away)
return MatchResult.AwayWins;
throw new Exception("Should be impossible");
}
Ich weiß, dass ich dies mit einem else
für die letzte Anweisung beheben konnte, aber ich ziehe es oft explizit zu sein. Dies ist zum Beispiel eine vereinfachte Situation.
Darüber hinaus: ist der Grund, warum der Compiler not all code paths return a value
wirft, weil die Situation für die Compiler zu kompliziert ist oder weil aus anderen Gründen (wie wir können in Theorie den Wert von home
auf halbem Weg von nicht verwalteten Code von einem ändern anderen Thread oder etwas?)
Ich kann nicht sehen, wie Compiler, dass Fehler erzeugt aus Ihrem Code, da alle Zweige einen Rückgabewert oder mindestens eine Ausnahme haben. Ihre erste Frage ist jedoch eher meinungsbezogen und wird daher geschlossen. Wie auch immer: Wie könnte ein Parameter weder gleich noch größer oder kleiner sein? Wie denkst du, ist es möglich, die Ausnahme überhaupt zu erreichen? – HimBromBeere
Nach diesen Code-Analyse-Tools wie ReSharper wird wahrscheinlich Ihre Ausnahme-Code als nicht erreichbar und Sie sollten es löschen. – HimBromBeere
ReSharper wird dies auch nicht erkennen, nur getestet. –