The Mighty Atom
Terugkerende gebruiker
- Lid geworden
- 22 mei 2008
- Berichten
- 1.380
Als hobbyprogrammeur is het altijd jammer om te horen dat je programma niet werkt of dat het fouten bevat wanneer je het laat testen door mede forum gebruikers. Denk bijvoorbeeld aan unhandled exceptions. Dit zijn fouten die niet worden afgevangen met een Try...Catch statement. Vaak zijn deze fouten makkelijk te fixen maar niet altijd, bijvoorbeeld als je exact moet weten WAAR de fout plaatsvond.
Om het voor ons hobbyprogrammeurs makkelijk te maken, heb ik deze bibliotheek geschreven die, zodra er een unhandled exception optreed, de foutgegevens netjes naar een bestand wegschrijft, en vervolgens een messagebox laten weergeven om de gebruiker te laten weten dat er zojuist een unhandled exception heeft plaatsgevonden.
De TheMightyAtom.UnhandledException class zal naast de foutmelding ook, indien beschikbaar, het bronbestand vermelden, de method naam en het regelnummer vermelden waarin de fout plaatsvond. Hier zitten wel een voorwaarde aan verbonden wil je deze gegeven verkrijgen. Hier kom ik later op terug.
De installatie instructies zijn als volgt (voor Visual Studio 2010 Professional met als programmeertaal VB.Net, andere edities van Visual Studio kunnen mogelijk verschillen):
1. Download the bibliotheek: LogUnhandledExceptionsLib Versie 1.0.0.0
2. In je Solution Explorer, dubbelklik op My Project.
3. Op het tabblad References, klik op Add....
4. Op het tabblad Browse zoek je de bibliotheek (dll) op die je hebt gedownload en open je deze. LogUnhandledExceptionsLib is nu toegevoegd aan de lijst met References.
Nu moet je er nog voor zorgen dat mijn bibliotheek eventuele unhandled exceptions in jouw programma kan afvangen. Dat doe je zo:
1. In je Solution Explorer, dubbelklik op My Project.
2. Op het tabblad [/i]Application, klik op de View Application Events knop.
3. Er word een nieuw bestand aan je project toegevoegd genaamd ApplicationEvents.vb/. Zet daar een UnhandledException sub klaar:
Voordat ik laat zien wat je verder moet doen in de MyApplication_UnhandledException sub, zal ik eerst alle beschikbare members beschrijven:
Hieronder een voorbeeld van het klaarzetten van de MyApplication_UnhandledException sub.
Als je bovenstaande voorbeeld code gebruikt, zal, wanneer er een unhandled exception in je programma plaatsvind, er een bestand genaamt error.txt in je C: directory worden aangemaakt. Ter voorbeeld, de inhoud van dat bestand zal er zo uit kunnen zien:
Als er meerdere unhandled exception optreden, worden de details toegevoegd aan dit bestand.
Zoals ik al eerder zei, is er een voorwaarde verbonden als je het bronbestand, method naam en regelnummer wilt achterhalen, en dat is dat het Program Debug Database bestand aanwezig moet zijn naast je executable en dat je dit bestand, samen met je executable moet delen. Zonder dit bestand is alleen de message beschikbaar en zullen het bronbestand, method naam en regelnummer "(Unkown") aanduiden.
Ook is het zo dat, als je dit alles wilt testen, je je executable BUITEN Visual Studio moet starten. Als je dit binnen Visual Studio doet via Debug Run (F5) zul je een standaard Visual Studio messagebox zien met de unhandled exception.
Dat is alles wat je moeten weten.
Hopelijk heb je wat aan mijn bibliotheek en hopelijk zal het je leven als hobbyprogrammeur makkelijker maken als het op foutopsporing aankomt.
Om het voor ons hobbyprogrammeurs makkelijk te maken, heb ik deze bibliotheek geschreven die, zodra er een unhandled exception optreed, de foutgegevens netjes naar een bestand wegschrijft, en vervolgens een messagebox laten weergeven om de gebruiker te laten weten dat er zojuist een unhandled exception heeft plaatsgevonden.
De TheMightyAtom.UnhandledException class zal naast de foutmelding ook, indien beschikbaar, het bronbestand vermelden, de method naam en het regelnummer vermelden waarin de fout plaatsvond. Hier zitten wel een voorwaarde aan verbonden wil je deze gegeven verkrijgen. Hier kom ik later op terug.
De installatie instructies zijn als volgt (voor Visual Studio 2010 Professional met als programmeertaal VB.Net, andere edities van Visual Studio kunnen mogelijk verschillen):
1. Download the bibliotheek: LogUnhandledExceptionsLib Versie 1.0.0.0
2. In je Solution Explorer, dubbelklik op My Project.
3. Op het tabblad References, klik op Add....
4. Op het tabblad Browse zoek je de bibliotheek (dll) op die je hebt gedownload en open je deze. LogUnhandledExceptionsLib is nu toegevoegd aan de lijst met References.
Nu moet je er nog voor zorgen dat mijn bibliotheek eventuele unhandled exceptions in jouw programma kan afvangen. Dat doe je zo:
1. In je Solution Explorer, dubbelklik op My Project.
2. Op het tabblad [/i]Application, klik op de View Application Events knop.
3. Er word een nieuw bestand aan je project toegevoegd genaamd ApplicationEvents.vb/. Zet daar een UnhandledException sub klaar:
Code:
Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
End Sub
Voordat ik laat zien wat je verder moet doen in de MyApplication_UnhandledException sub, zal ik eerst alle beschikbare members beschrijven:
File (String)![]()
WriteOnly Property
The file to write the unhandled exception details to.
ExceptionFeed (Exception)![]()
WriteOnly Property
The exception feed to read and process.
ShowExceptionDetails (Boolean)![]()
WriteOnly Property
If true, show a messagebox with all the exception details to the user. (Default value: True)
Message (String)![]()
ReadOnly Property
Returns the message associated with the exception.
SourceFile (String)![]()
ReadOnly Property
Returns the source filename in which the exception occured.
Method (String)![]()
ReadOnly Property
Returns the method in which the exception occured.
LineNumber (String)![]()
ReadOnly Property
Returns the line number on which the exception occured.
LogUnhandledException![]()
Public Method
Writes the exception details to the file specified.
Hieronder een voorbeeld van het klaarzetten van de MyApplication_UnhandledException sub.
Code:
Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
[COLOR="seagreen"]'Een instance van the TheMightyAtom.UnhandledException klas maken[/COLOR]
[COLOR="blue"]Dim[/COLOR] ue [COLOR="blue"]As New[/COLOR] TheMightyAtom.[COLOR="teal"]UnhandledException[/COLOR]
[COLOR="seagreen"]'Bestand om de foutgegevens van de exception naar toe te schrijven[/COLOR]
ue.File = [COLOR="darkred"]"C:\errors.txt"[/COLOR]
[COLOR="seagreen"]'Feed opgeven[/COLOR]
ue.ExceptionFeed = e.Exception
[COLOR="seagreen"]'Wel of geen Messagebox weergeven wanneer er een unhandled exception optreedt (Optioneel, standaard waarde True)[/COLOR]
ue.ShowExceptionDetails = [COLOR="blue"]True[/COLOR]
[COLOR="seagreen"]'Voorkomen dat de applicatie automatisch word afgsloten[/COLOR]
e.ExitApplication = [COLOR="blue"]False[/COLOR]
[COLOR="seagreen"]'Foutgegevens naar het eerder opgegeven bestand schrijven[/COLOR]
ue.LogUnhandledException()
End Sub
Als je bovenstaande voorbeeld code gebruikt, zal, wanneer er een unhandled exception in je programma plaatsvind, er een bestand genaamt error.txt in je C: directory worden aangemaakt. Ter voorbeeld, de inhoud van dat bestand zal er zo uit kunnen zien:
####################################################################################################
WindowsApplication1 1.0.0.0 - Unhandled Exceptions Log
####################################################################################################
####################################################################################################
Message:
De conversie van tekenreeks one naar type Double is ongeldig.
Source file:
Form1.vb
Method:
Button1_Click
Line number:
8
####################################################################################################
Als er meerdere unhandled exception optreden, worden de details toegevoegd aan dit bestand.
Zoals ik al eerder zei, is er een voorwaarde verbonden als je het bronbestand, method naam en regelnummer wilt achterhalen, en dat is dat het Program Debug Database bestand aanwezig moet zijn naast je executable en dat je dit bestand, samen met je executable moet delen. Zonder dit bestand is alleen de message beschikbaar en zullen het bronbestand, method naam en regelnummer "(Unkown") aanduiden.
Ook is het zo dat, als je dit alles wilt testen, je je executable BUITEN Visual Studio moet starten. Als je dit binnen Visual Studio doet via Debug Run (F5) zul je een standaard Visual Studio messagebox zien met de unhandled exception.
Dat is alles wat je moeten weten.
Hopelijk heb je wat aan mijn bibliotheek en hopelijk zal het je leven als hobbyprogrammeur makkelijker maken als het op foutopsporing aankomt.

Laatst bewerkt: