none
Programmabsturz festhalten

    Frage

  • Hallo.

    Gibt es eine Möglichkeit Programmabstürze in ner Log File festzuhalten? Sprich mit genauen Fehlerdetails usw. Ich nutze WPF und C#

    MfG
    Giraffe

    Freitag, 21. Februar 2014 15:31

Antworten

  • Hallo,
    zunächst solltest du alle "gefährlichen" Stellen in try...catch-Blöcke packen. Dann kannst du im Catch-Block die behandelbaren Fehler abfangen und verarbeiten. Bei nicht behandelbaren Fehlern bringt es je nach Fehler nichts das Programm noch weiter laufen zu lassen. Du solltest es also abstürtzen lassen.
    Für Fehler, die du nicht vorher gesehen hast, kannst du in WPF das DispatcherUnhandledException-Event in der App.xaml abonnieren:
    <Application x:Class="WpfApplication82.App"
                 ...
    DispatcherUnhandledException="Application_DispatcherUnhandledException">
    Aus den EventArgs erhälst du das Exception-Objekt und kannst deine Fehlerinfos abspeichern:
    private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {
        using (TextWriter tw = new StreamWriter(@"C:\EinOrtAnDemDuSchreibrechteHast\meinprogramm.log"))
        {
            tw.WriteLine("Unhandled exception: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString());
            tw.WriteLine(e.Exception.StackTrace); //Beispielswiese den Stacktrace schreiben
        }
    }
    Du musst natürlich sicher stellen, das du auch eine Datei abspeichern darfst (Schreibrechte hast). Sonst endet das Fehlerloggen im Fehler.



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert TZDEV Freitag, 21. Februar 2014 15:45
    Freitag, 21. Februar 2014 15:44