This post originated from an RSS feed registered with .NET Buzz
by -.
Original Post: Unbehandelte Ausnahmen (Unhandled Exceptions)
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Die Frage nach einer globalen Behandlung] von aufgetretenen Ausnahmen - und speziell von unbehandelten Ausnahmen) wird oft gestellt. Als m��gliche Realisierung wird oft das folgende Bespiel gebracht (Ausgangspunkt ist hier eine Konsolenanwendung):
class Program
{
staticvoid Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler
(delegate(object o, UnhandledExceptionEventArgs
eventArgs)
{
Console.WriteLine("Unhandled Exception: " +
eventArgs.ExceptionObject);
});
}
}
Verschwiegen (ob bewu��t oder aus Nichtwissenheit) wird meist, dass ��ber diesen Weg zwar viele Ausnahmen abgefangen werden k��nnen, diese M��glichkeit jedoch nicht als "Exception-Handler" zu verwenden ist.
Warum nicht? Vorerst werden hiermit nicht behandelnden Exceptions mitgeteilt. W��rde es sich um einen Handler handeln, w��ren die Exceptions nicht unbehandelt. (Achtung: Rekursions-Alarm!)
Weiters lassen sich einige Exceptions hiermit nicht behandeln, da sie via try-catch nicht abgefangen werden k��nnen (seit .NET 2.0: StackOverflowException).
Das bedeutet: Die einzige sinnvolle Einsatzvariante liegt darin, den aktuellen Anwendungsstatus zu speichern bzw. die nicht behandelnden Exceptions in eine Logdatei aufzuzeichnen. Denn die Anwendung wandert ohnehin ��ber den Jordan (sofern eventArgs.IsTerminating wahr ist) ...