Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus. - Siddhartha Gautama
emde IT-LÖSUNGEN
> Tel. 08131 / 99 69 80-0
> Kontakt per E-Mail
Fehler protokollieren
12. Januar 2014
Eine professionell entwickelte Datenbank-Anwendung verfügt selbstverständlich über eine Fehlerbehandlung: Jegliche Laufzeitfehler - also Fehler, welche während der Benutzung der Datenbank auftreten - werden abgefangen, der Benutzer erhält eine aussagekräftige Fehlermeldung und die Anwendung wird entweder fortgeführt oder kontrolliert beendet.
Langfristiges Ziel ist es natürlich, sämtliche Fehler zu beheben. Dazu muss der Entwickler wissen, wann welche Fehler aufgetreten sind. Ein Benutzer wird den Entwickler aber nur dann benachrichtigen, wenn ein Fehler ihn darin hindert, eine Funktion überhaupt zu benutzen - ansonsten wird die Fehlermeldung schlicht ignoriert.
In unseren Datenbank-Anwendungen werden Fehler deshalb in einem Fehlerprotokoll abgelegt. Diese Protokolle schauen wir uns von Zeit zu Zeit an: Nach der Installation eines neuen Moduls alle paar Stunden oder Tage, ansonsten etwa alle sechs Monate. So können wir etwaige Fehler schnell erkennen und aufgrund der im Fehlerprotokoll enthaltenen Informationen in der Regel gleich beheben.
Eine professionell entwickelte Datenbank-Anwendung verfügt selbstverständlich über eine Fehlerbehandlung. Das bedeutet, dass jegliche Laufzeitfehler - also Fehler, welche während der Benutzung der Datenbank auftreten - abgefangen werden, der Benutzer eine aussagekräftige Fehlermeldung erhält und die Anwendung entweder korrekt fortgeführt oder kontrolliert beendet wird.
Das Error-Handling in den Funktionen
Die Funktionen sind alle nach folgendem Schema aufgebaut:
Function Toto (Par1, Par2) Dim Msg As String, Code As String, Status As Integer, Info As Variant On Error Goto Err_Toto Info = "Par1 = " & Par1 & ", Par2 = " & Par2 [Code-Block 1] Status = 10 [Code-Block 2] Status = 20 ... Exit Function Err_Toto: Msg = "Fehler beim [Beschreibung für Toto]" Code = "Toto()" Fehlerbehandlung Msg, Code, Status, Info Exit Function End Function
Msg enthält eine möglichst aussagekräftige Meldung für den Benutzer. Die Variable kann natürlich auch schon innerhalb der Funktion gesetzt werden, weil vielleicht im Verlaufe der Funktion jeweils andere Meldungen sinnvoll sind. Dann heißt es im Error Handler unten eben If IsNull(Msg) Then Msg = "...".
Code enthält den Namen der Funktion. Hier kann man natürlich auch gleich die aktuellen Parameter ergänzen.
Über die Variable Status sieht man im Fehlerprotokoll, wo ungefähr der Fehler aufgetreten ist. Zwischen zwei Inkrementierungen von Status liegen in der Regel nur ein paar Zeilen. Und wenn ich einen speziellen Fehler verfolge, füge ich auch schon mal eine Status-Zeile hinter jede einzelne Code-Zeile ein.
Die Variable Info dient dazu, zusätzliche Informationen in das Fehlerprotokoll zu schreiben, etwa den Wert der Funktionsparameter oder sonstige Werte, anhand derer man mehr über den Kontext erfährt, in dem der Fehler aufgetreten ist. In kurzen Funktionen bleibt diese Variable meist leer, weil keine zusätzliche Information erforderlich ist.
Die Fehlerbehandlung
Die Funktion Fehlerbehandlung gibt die Fehlermeldung für den Benutzer aus und trägt einen Datensatz in das Fehlerprotokoll ein. Außerdem setzt sie die Statusanzeige, die Eieruhr und die Err.Number zurück.
Ihre minimale Version sieht folgendermaßen aus:
Function Fehlerbehandlung(Msg As String, Code As String, Status As Integer, Info As Variant) If Len(Msg) > 0 Then MsgBox Msg, vbExclamation, "Meine DB" Protokoll_Enter Msg, Code, Status, Info SysCmd acSysCmdClearStatus DoCmd.SetWarnings True DoCmd.Hourglass False Err = 0 Exit Function End Function
Diese Funktion kann man nun ganz nach Bedarf erweitern. Zum Beispiel kann man für gewisse Fehler (Err.Number) die Fehlermeldung an den Benutzer noch um zusätzliche Texte ergänzen. In anderen Fällen ist es ausreichend, dem Benutzer eine Meldung auszugeben, aber keinen Eintrag ins Protokoll vorzunehmen.
Tabelle für das Fehlerprotokoll
Wir verwenden für das Fehlerprotokoll eine Tabelle, die etwa folgende Struktur hat:
Weitere nützliche Felder sind z.B. die Versions-Nummer oder der Name des aktuellen PCs - das hängt natürlich immer von der jeweiligen Applikation ab.
Der Eintrag ins Fehlerprotokoll
Die Funktion zum Eintrag des Fehlers in das Fehlerprotokoll sieht zum Beispiel folgendermaßen aus:
Function Protokoll_Enter(Msg As String, Code As String, Status As Integer, Info As Variant) On Error Resume Next TProt.AddNew With TProt !Name = [Aktueller Benutzer] !Datum = Now !Code = Code !Status = Status !Err = Err !Msg = Msg !Info = Info End With TProt.Update If Err Then MsgBox "Fehler beim Eintragen in das Protokoll:" & vbCrLf & Error, vbExclamation, "Meine DB" End If Err = 0 End If Exit Function End Function
Das Fehlerprotokoll kann man natürlich auch verwenden, um andere Ereignisse zu protokollieren. Zum Beispiel kann man unter Verwendung des Protokolls ein einfaches Monitoring für neue Funktionen implementieren.
Neuen Kommentar schreiben
Stichworte
- Fehlerbehandlung
- Debugging
- Error handler
- Fehleranalyse
Kommentare (0)
Keine Kommentare gefunden!