Applicatie stoppen voor fout getoont wordt

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledException
    MsgBox(5 / 0 + "hallo") 'Een foutmelding veroorzaken
End Sub

Private Sub UnhandledException(ByVal sender As Object, ByVal args As UnhandledExceptionEventArgs)
    Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
    '''Hier staat normaal: foutmelding in logbestand schrijven en msgbox tonen, ik heb de code weggelaten omdat deze er niet toe doet
        
    'Hoe stop ik hier de applicatie?
End Sub

Ik vang met bovenstaande code 'niet-in-try-catch'-foutmeldingen op. Maar hoe stop ik het programmaatje zonder dat de foutmelding van het .NET Framework zelf ook getoont wordt?
Me.Close en Application.Exit werken niet... hierbij wordt eerst de foutmelding van het .NET FrameWork zelf getoont, en daarna pas wordt het afgesloten...

----------------------
Nog een vraag:
Deze code werkt WEL tijdens het debuggen, maar NIET als ik hem gecompiled heb... Dan weergeeft hij gewoon de foutmelding van het .NET FW, zonder de alternatieve code uit te voeren. Hoe laat ik deze code wel altijd werken?
 
Laatst bewerkt:
on error goto fout
hier de regel uit de code de de fout kan maken.

fout:
exit sub

end sub
 
on error goto fout
hier de regel uit de code de de fout kan maken.

fout:
exit sub

end sub

Dat komt op hetzelfde neer als Try (code) Catch (fout_gevonden) End Try...

de UnhandledException methode vangt fouten op in het volledige programma, zonder dat je try-catch hoeft te gebruiken.
Oftewel: in het voorbeeld van hierboven wordt in het load-event een fout veroorzaakt (5/0+"hallo"). Deze fout wordt door de UnhandledException methode opgevangen, de code van 'UnhandledException (de sub) wordt uitgevoerd, en DAARNA pas wordt de foutmelding getoont, zoals normaal ook is. Echter wil ik graag dat in UnhandledException het programma afgesloten wordt. (Dus voordat de echte foutmelding getoont wordt). Dit doet hij nu niet. Mijn vraag is dus hoe je dat wel kunt doen.

***
On Error GoTo X: vangt de fouten in de code die eronder staat op
On Error Resume Next: vangt de fouten in een loop op (of het was 'on error continue', weet ik niet zeker, ik gebruik eigenlijk nooit On ... of GoTo dingen
Try X Catch Y End Try: vangt de fouten in de code tussen 'Try' en 'Catch' op
UnhandledException: vangt fouten in het volledige programma op (uitzondering bij BackgroundWorkers dacht ik)
 
Code:
Private Sub UnhandledException(ByVal sender As Object, ByVal args As UnhandledExceptionEventArgs)
    Dim e As Exception = DirectCast(args.ExceptionObject, Exception) 'geen idee of je dit nodig hebt of niet

application.exit 'sluit de applicatie direct af

End Sub

Is dit wat je zoekt?
 
Code:
Private Sub UnhandledException(ByVal sender As Object, ByVal args As UnhandledExceptionEventArgs)
    Dim e As Exception = DirectCast(args.ExceptionObject, Exception) 'geen idee of je dit nodig hebt of niet

application.exit 'sluit de applicatie direct af

End Sub

Is dit wat je zoekt?

Een klein citaatje uit mijn eerste post:
Me.Close en Application.Exit werken niet...
Dus helaas, dit werkt ook niet... wel bedankt voor de suggestie

(o ja, dat directcast-regeltje is om de variabele 'args' om te zetten naar de variabele 'e', welke dan de details van de echte foutmelding gaat bevatten. Handig als je je eigen foutmelding wilt kunnen tonen, of automatisch een debuglog wilt laten maken. Niet van toepassing op het afsluiten van de applicatie...)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan