Bis jetzt habe ich nur einen Try / Catch-Block um Application.Run
den Program.cs
Einstiegspunkt des Programms gelegt. Dadurch werden alle Ausnahmen im Debug-Modus gut genug erfasst, aber wenn ich das Programm ohne den Debug-Modus ausführe, werden Ausnahmen nicht mehr behandelt. Ich bekomme die unbehandelte Ausnahmebox.
Ich möchte nicht, dass das passiert. Ich möchte, dass alle Ausnahmen abgefangen werden, wenn sie im Nicht-Debug-Modus ausgeführt werden. Das Programm hat mehrere Threads und vorzugsweise werden alle Ausnahmen von demselben Handler abgefangen. Ich möchte Ausnahmen in der Datenbank protokollieren. Hat jemand einen Rat, wie das geht?
quelle
In NET 4 werden bestimmte Ausnahmen nicht mehr standardmäßig erfasst. Dies sind in der Regel Ausnahmen, die auf einen (möglicherweise schwerwiegenden) beschädigten Status der ausführbaren Datei hinweisen, z. B. eine AccessViolationException.
Versuchen Sie, das Tag [HandleProcessCorruptedStateExceptions] vor Ihrer Hauptmethode zu verwenden, z
quelle
AppDomain.CurrentDomain.UnhandledException
undApplication.ThreadException
auch mit[HandleProcessCorruptedStateExceptions]
Tag verwenden?Ein schönes Beispiel finden Sie unter http://www.csharp-examples.net/catching-unhandled-exceptions/ . Ändern Sie grundsätzlich Ihre Hauptleitung in:
quelle
Sie können dafür die NBug- Bibliothek verwenden. Mit minimalem Setup wie folgt:
Sie können Informationen zu allen nicht behandelten Fehlern in Ihrer Anwendung sammeln, auch wenn diese auf den Clients bereitgestellt werden. Wenn Sie keine Bibliothek eines Drittanbieters verwenden möchten, sollten Sie folgende Ereignisse anhängen:
quelle
Check Online for a Solution
OderClose the Program
... usw. Wenn ich mich jedoch NICHT anmelde, erhalte ich die reguläre generische .NET-Ausnahme Fenster. Dies geschieht sowohl bei Release- als auch bei Debug-Builds. Außerdem wurde versucht, die EinstellungApplication.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
ändert nichts.