Gibt es einen Unterschied zwischen nur sagen throw;
und throw ex;
unter der Annahme ex
ist die Ausnahme, die Sie fangen?Auslösen von Ausnahmen in ASP.NET C#
Antwort
throw ex;
löscht Ihren Stacktrace. Tun Sie das nicht, es sei denn, Sie möchten den Stacktrace löschen. Verwenden Sie einfach throw;
Sie haben zwei Optionen werfen; oder werfen Sie das Orginal Exceptional als eine Ausnahme einer neuen Exception. Je nachdem, was Sie brauchen.
Hier ist ein einfaches Code-Snippet, das den Unterschied veranschaulichen soll. Der Unterschied liegt darin, dass der Befehl "ex" den Stack-Trace zurücksetzt, als ob die Zeile "throw ex;
" die Quelle der Ausnahme wäre.
Code:
using System;
namespace StackOverflowMess
{
class Program
{
static void TestMethod()
{
throw new NotImplementedException();
}
static void Main(string[] args)
{
try
{
//example showing the output of throw ex
try
{
TestMethod();
}
catch (Exception ex)
{
throw ex;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine();
Console.WriteLine();
try
{
//example showing the output of throw
try
{
TestMethod();
}
catch (Exception ex)
{
throw;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
}
Ausgang (man beachte die verschiedenen Stack-Trace):
System.NotImplementedException: The method or operation is not implemented.
at StackOverflowMess.Program.Main(String[] args) in Program.cs:line 23
System.NotImplementedException: The method or operation is not implemented.
at StackOverflowMess.Program.TestMethod() in Program.cs:line 9
at StackOverflowMess.Program.Main(String[] args) in Program.cs:line 43
- 1. Können C++ streambuf-Methoden Ausnahmen auslösen?
- 2. Kann/sollten Sie Ausnahmen in einer C# switch-Anweisung auslösen?
- 3. Dynamisch Erneutes Auslösen von selbstdefinierten C++ Ausnahmen wie Python Ausnahmen SWIG mit
- 4. Auslösen von Ausnahmen von einem Konstruktor in. NET
- 5. Können Konstruktoren Ausnahmen in Java auslösen?
- 6. Wie kann ich Ausnahmen in Delphi auslösen?
- 7. C# -Compiler-Fehler ?: Keine Methoden gefunden, die immer Ausnahmen auslösen
- 8. Auslösen von Ausnahmen in Controller-Methoden Play framework?
- 9. Behandeln von benutzerdefinierten C++ - Ausnahmen in Cython
- 10. Wie kann ich Ausnahmen vom Webservice auslösen?
- 11. Welche Ausnahmen könnte eine Python-Funktion auslösen?
- 12. Wie mysqli Ausnahmen mit MYSQLI_REPORT_STRICT auslösen kann?
- 13. Dispatcher mit Prioritätswarteschleifen, die Ausnahmen auslösen
- 14. Gibt es Fehler beim Auslösen von Ausnahmen im try-Block?
- 15. Wie behandelt man Ausnahmen in C# DLL geladen von C++
- 16. Benutzerdefinierte Ausnahmen in C++
- 17. COM-Ausnahmen in C#
- 18. FileSystemWatcher arbeitet 3-5 mal vor dem Auslösen von Ausnahmen - C#
- 19. Behandeln von Ausnahmen während eines ASP.NET-Anforderungslebenszyklus
- 20. Unbehandelte Ausnahmen in einem Thread im Hauptthread auslösen?
- 21. Benutzerdefinierte Ausnahmen in Javascript auslösen. Welchen Stil verwenden?
- 22. Behandeln von Ausnahmen in dem Kopierzuweisungsoperator (C++)
- 23. Wie ermittelt man, welche Ausnahmen "x []" auslösen könnte?
- 24. Erneutes Auslösen von Ausnahmen in Java, ohne dass der Stack-Trace
- 25. Was ist der Grund dafür, dass Frameworks keine Ausnahmen auslösen?
- 26. Non-Stop-Ausnahmen in C#
- 27. C++ unbehandelte Ausnahmen
- 28. Ausnahmen in Konstruktoren
- 29. Ereignis in C# aus externer Anwendung auslösen?
- 30. Intercepting C++ Ausnahmen
Gibt es viele Umstände, in denen "werfen ex" nützlich ist? –
Ich habe noch nie einen gesehen, obwohl es vielleicht sein könnte. Wie unten erwähnt, habe ich davon gehört, dass ich es an die interne Lösung anschließe, aber ich kann mir keinen Grund vorstellen, warum Sie Ihre Stack-Spur zerstören wollen. – GEOCHET