C#-Ausnahmebehandlung: Der Unterschied zwischen throw
und throw new Exception()
Bei der Behandlung von C#-Ausnahmen können Programmierer auf zwei ähnlich aussehende Strukturen stoßen:
<code class="language-csharp">try { ... } catch { throw }</code>
und
<code class="language-csharp">try { ... } catch (Exception e) { throw new Exception(e.Message); }</code>
Während beide Ausnahmen auslösen, gibt es wesentliche Unterschiede in ihrem Verhalten.
throw
Eine throw
-Anweisung ohne Parameter löst die ursprüngliche Ausnahme erneut aus, die zum Fehlschlagen des try
-Blocks geführt hat. Dies bedeutet, dass der Stack-Trace der ursprünglichen Ausnahme erhalten bleibt, was das Debuggen und Verfolgen der Fehlerquelle erleichtert.
throw new Exception()
Andererseits erstellt throw new Exception(e.Message)
eine neue Ausnahmeinstanz, deren Message
-Attribut auf die Nachricht der ursprünglichen Ausnahme gesetzt ist. Dies hat jedoch mehrere Nachteile:
ArgumentException
, enthalten zusätzliche Informationen (z. B. ParamName
), die beim Erstellen neuer Ausnahmen unterschiedlichen Typs verloren gehen. Best Practices:
In den meisten Fällen wird dringend davon abgeraten, throw e
oder throw new Exception(e.Message)
zum erneuten Auslösen von Ausnahmen zu verwenden. Bedenken Sie Folgendes:
throw;
. InnerException
-Argumente übergeben. Das obige ist der detaillierte Inhalt von„throw' vs. „throw new Exception()': Wann sollten Sie Ausnahmen in C# erneut auslösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!