Frage

Ich habe einfache Anwendung mit einzelnen AppDomain welches regelmäßig mit auf einem Server gestartet wird. Manchmal tritt nicht behandelte Ausnahme in der Anwendung und Standard-Abbruch / Retry / ignoriert Dialog Pops. Ich muss irgendwie die edialog verhindern, zeigt und nur Ausgangs die Ausnahme auf StrErr und die Anwendung zu schließen. So eingeschlossen ich den gesamten Code in main-Methode mit try-catch-Anweisung, aber es hat nicht helfen -. Die Ausnahme Dialog noch manchmal dargestellt wird

Der Main () Code sieht wie folgt aus:

try
{
    RunApplication();
}
catch (Exception exc)
{   
    Console.Error.WriteLine(exc.ToString());
    Console.Error.WriteLine(exc.StackTrace);
    if (exc.InnerException != null)
    {
       Console.Error.WriteLine(exc.InnerException.ToString());
       Console.Error.WriteLine(exc.InnerException.StackTrace);
    }
    Environment.Exit(666);
}

Die Try-catch-Klausel shoud alle unbehandelten Ausnahmen fangen und der Ausnahme-Dialog sollte AFAIK nie Popup. Bin ich etwas fehlt? Oder gibt es eine Einstellung (Registry usw.) auf dem Server, das etwas besonderes Verhalten steuert im Zusammenhang mit der Ausnahme Dialog / Anwendung Fehlercode?

War es hilfreich?

Lösung

Es gibt eine nicht behandelte Ausnahme Ereignis, das Sie in der Anwendungsdomäne abonnieren können.

    public static void Main()   
    {   
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

        //some code here....
    }   

    /// <summary>
    /// Occurs when you have an unhandled exception
    /// </summary>
    public static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)   
    { 
        //here's how you get the exception  
        Exception exception = (Exception)e.ExceptionObject;  

        //bail out in a tidy way and perform your logging
    }

Andere Tipps

Haben Sie die Möglichkeit in Betracht gezogen, dass Ihre catch-Klausel werfen Ausnahmen geben kann? Haben Sie Threads in Ihrem Haupt-App laichen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top