Es gibt bereits einige Beiträge, die nach dem Unterschied zwischen den beiden fragen.
(Warum muss ich das überhaupt erwähnen...)
Aber meine Frage unterscheidet sich insofern, als dass ich "throw ex" in einer anderen Fehler gottgleichen Behandlungsmethode aufrufe.
public class Program {
public static void Main(string[] args) {
try {
// etwas
} catch (Exception ex) {
HandleException(ex);
}
}
private static void HandleException(Exception ex) {
if (ex is ThreadAbortException) {
// dann ignorieren,
return;
}
if (ex is ArgumentOutOfRangeException) {
// dann protokollieren,
throw ex;
}
if (ex is InvalidOperationException) {
// dann Nachricht anzeigen,
throw ex;
}
// und so weiter.
}
}
Wenn try & catch
im Main
verwendet wurden, würde ich throw;
verwenden, um den Fehler erneut zu werfen. Aber im obigen vereinfachten Code durchlaufen alle Ausnahmen HandleException
.
Hat throw ex;
den gleichen Effekt wie das Aufrufen von throw
, wenn es innerhalb von HandleException
aufgerufen wird?
5 Stimmen
Es gibt einen Unterschied, der damit zu tun hat, ob oder wie der Stapelrückverfolgungsverlauf in der Ausnahme erscheint, aber ich erinnere mich nicht daran, welcher jetzt welcher ist, also werde ich dies nicht als Antwort auflisten.
0 Stimmen
@Joel: Danke. Ich glaube, die Verwendung der HandleError-Ausnahme ist keine gute Idee. Ich wollte nur etwas Fehlerbehandlungscode umstrukturieren.
1 Stimmen
Der dritte Weg besteht darin, eine neue Ausnahme zu umschließen und erneut zu werfen timwise.blogspot.co.uk/2014/05/…
0 Stimmen
Möglicher Duplikat von Unterschied zwischen throw und throw new Exception()
0 Stimmen
Sehen Sie sich dieses YouTube-Video an throw vs throw ex youtube.com/watch?v=WGwOd6yMja4 Wenn Sie Dinge sehen, wird es klarer.