Wenn ich hier richtig zwischen den Zeilen lese, besteht das Problem darin, dass Ihre Ausnahme effektiv "verschwindet", obwohl das Standardverhalten des Debuggers bei nicht behandelten Ausnahmen unterbrochen werden sollte.
Wenn Sie über asynchrone Methoden verfügen, tritt dieses Problem möglicherweise auf, da Ausnahmen, die nicht als Teil einer Task-Fortsetzung in einem Thread-Pool-Thread abgefangen wurden, nicht als nicht behandelte Ausnahmen gelten. Sie werden vielmehr verschluckt und mit der Aufgabe gespeichert.
Schauen Sie sich zum Beispiel diesen Code an:
class Program
{
static void Main(string[] args)
{
Test();
Console.ReadLine();
}
private async static Task Test()
{
await Task.Delay(100);
throw new Exception("Exception!");
}
}
Wenn Sie dieses Programm mit den Standard-Debugger-Einstellungen ausführen (nur bei nicht behandelten Ausnahmen stoppen), wird der Debugger nicht unterbrochen. Dies liegt daran, dass der der Fortsetzung zugewiesene Thread-Pool-Thread die Ausnahme verschluckt (an die Task-Instanz weitergibt) und sich wieder an den Pool freigibt.
Beachten Sie, dass in diesem Fall das eigentliche Problem darin besteht, dass die Task
Rückgabe von Test()
niemals überprüft wird. Wenn Ihr Code ähnliche Arten von "Feuer-und-Vergessen" -Logik enthält, werden die Ausnahmen zum Zeitpunkt des Auslösens nicht angezeigt (selbst wenn sie innerhalb der Methode "nicht behandelt" werden). Die Ausnahme wird nur angezeigt, wenn Sie die Aufgabe beobachten, indem Sie auf sie warten, ihr Ergebnis überprüfen oder ihre Ausnahme explizit betrachten.
Dies ist nur eine Vermutung, aber ich denke, es ist wahrscheinlich, dass Sie so etwas beobachten.
Tool
oder nichtWindow
alle gewünschten Speicherorte vorhanden sind. In Ihrem Fall suchen Sie nach Ausnahmeeinstellungen .