Avatar billede lasserasch Juniormester
04. oktober 2009 - 21:16 Der er 2 kommentarer og
1 løsning

Behandling af Unhandled Exception i Network Deployed Windows Applikation

Hejsa...

Har en ting som jeg ikke helt kan finde ud af.

Jeg har lavet en Windows Applikation som jeg skal have ud i en test fase hos nogle brugere.

Når der opstår en Uhandled Exception i programmet, så ville jeg gerne behandle denne ved at sende en mail med Stacktrace osv i.

Dog alt sammen noget som brugeren selv bestemmer om skal sendes af sted.

Jeg har lavet det hele, og det virker super godt når jeg debugger fra VS.

Men når programmet køres hos brugerne (Programmet er Network Deployed) så viser den ikke min fine form.

I stedet kommer denne standard "Unhandled Exception has occurred in your appplication" dialogbox frem.

Nogen som har en ide til hvordan man kan ændre det?


I koden (program.cs) har jeg gjort følgende for at få min custom dialogbox op når der opstår en exception


static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
        try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            catch (Exception Ex)
            {
             
                frmerrobox frmerrorbox = new frmerrobox();
                frmerrorbox.load("Der opstod desværre en ikke håndteret fejl i systemet.", Ex);
               
            }
        }

Mvh.
Lasse
Avatar billede mrtn Nybegynder
04. oktober 2009 - 21:46 #1
Måske oplever de en fejl i de to linier:
                frmerrobox frmerrorbox = new frmerrobox();
                frmerrorbox.load("Der opstod desværre en ikke håndteret fejl i systemet.", Ex);

Der kunne du måske lave lidt mere fejlhåndtering!?
Avatar billede kza Nybegynder
05. oktober 2009 - 00:46 #2
Hvis du sender mails med sådan noget som:
    SmtpClient smtpClient = new SmtpClient("localhost");
    smtpClient.Send(message);

så kan du sagtens risikere, at dine brugere ikke har en SMTP-klient installeret - det kræver nemlig at IIS er installeret.
I så fald vil din frmerrorbox.load() kaste en exception, der vil blive til en unhandled exception.


Du kan i øvrigt overveje at anvende Application.ThreadException event'en, så crash'er din application ikke, selvom du har en unhandled exception:

using System.Diagnostics;
...

static void Main()
{
    Application.ThreadException += new
        System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

static void Application_ThreadException(object sender,
    System.Threading.ThreadExceptionEventArgs e)
{
    try
    {
        frmerrobox frmerrorbox = new frmerrobox();
        frmerrorbox.load("Der opstod desværre en ikke håndteret fejl i systemet.", e.Exception);
    }
    catch (Exception ex)
    {
        // Hvis fejlhåndteringen fejler, så log det i eventloggen
        EventLog.WriteEntry(Application.ProductName, ex.ToString(), EventLogEntryType.Error);
    }
}

P.S. Hvis eventloggen er løbet fuld, så kaster det sidste kald til EventlLog.WriteEntry() en exception.
Avatar billede lasserasch Juniormester
11. oktober 2010 - 21:27 #3
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester