Avatar billede tomjelen Nybegynder
10. august 2004 - 21:06 Der er 7 kommentarer og
1 løsning

"global" exception handling

Findes der i console og winform applikationer en måde, at fange uhåndteret exceptions og bearbejde dem et centralt sted?

Jeg mener lidt som man i asp.net har Application_Error eventen i global.asax, som bilver triggerede når der sker en unhandled exception, så jeg evt kan redirecte til en pæn fejl-side og samtidigt få logget fejlen.
Avatar billede arne_v Ekspert
10. august 2004 - 21:08 #1
Kan du ikke bare lave en try catch aller yderst i din main ?
Avatar billede finger Nybegynder
10. august 2004 - 21:17 #2
ja, som arne siger, lav en
try
{
}
catch
{
}

omkring det først du gør i din main...
fx hvis du starter en form som er et hoved vindue
Avatar billede tomjelen Nybegynder
10. august 2004 - 21:26 #3
Hmm, havde bare en eller anden ide om at exceptions fra tråde, timers og den slags ikke kom så langt. Ved ikke lige hvordan jeg kom på de tanker...

Men jeg fandt faktisk også denne et svar på den tankegang jeg selv havde:

http://www.error-bank.com/microsoft.public.dotnet.languages.csharp/262410_Thread.aspx

Er det lige godt om man vælger den try/catch yderst, eller vælger at følge deres forslag:

For console applications look at:
  System.AppDomain.UnhandledException event
  Use AddHandler in your Sub Main.

For Windows Forms look at:
  System.Windows.Forms.Application.ThreadException event
  Use AddHandler in your Sub Main.
Avatar billede arne_v Ekspert
10. august 2004 - 21:31 #4
Det er rigtigt.

Du skal have en try catch i hver tråd for at fange alt.
Avatar billede arne_v Ekspert
10. august 2004 - 21:34 #5
Nu ligger dette lidt udenfor mit ekspertise område.

Men efter 30 sekunders skim af den artikel, så læser jeg det som at
pointen ved den teknik ikke er ens egen exception handling men at
disable diverse default exception handlere hvis opførsel man ikke
kan lide.
Avatar billede tomjelen Nybegynder
10. august 2004 - 22:49 #6
Ok, så var jeg ikke helt galt på den med trådene alligevel hehe.
Havde ikke lige fået læst msdn artiklen. Men efter at have læst den
tror jeg hans pointe er at, man helst ikke skal bruge catch(Exception), da der kan ske så mange exceptions som man ikke kan tage højde for, og håndtere ordentligt. I stedet til at, logge og afslutte applicationen ved en unhandled exception bruger han:

      AppDomain.CurrentDomain.UnhandledException += // CLR
        new UnhandledExceptionEventHandler(OnUnhandledException);

      Application.ThreadException += // Windows Forms
        new System.Threading.ThreadExceptionEventHandler(
            OnGuiUnhandedException);

Jeg går ud fra dette også fanger exceptions i tråde, eftersom han ikke nævner det som et problem. Så det ville nok passe fint til mit formål. Må rode lidt med det i morgen..

Smid et svar hvis du vil have points for det hurtige svar hehe
Avatar billede arne_v Ekspert
10. august 2004 - 22:58 #7
Den sidste lyder jo som noget der fanger thread exceptions !  :-)

Faktisk argumenterer artiklen ikke imod at catche Exception aller yderst. Den
argumenterer mod at catche Exception langt inde i koden. Fordi man med uforudsete
exceptions alligevel ikke kan gøre andet end at afslutte.
Avatar billede arne_v Ekspert
10. august 2004 - 22:58 #8
og et svar
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