Debug-Modus für Entwickler

Normalerweise sind bei mir die ersten beide Befehle in einem Script:
Set Error Capture [ On ]
Allow User Abort [ Off ]

Dadurch schalte ich die Fehleraufzeichnung ein. Nun werden Fehlermeldungen unterdrückt, und ich muss mich als Entwickler selbst drum kümmern, was ich mit aufkommenden Fehlern mache. Dazu verwendet man Get (LastError) und wertet den entsprechenden Fehler aus.

Der andere Befehl sorgt dafür, dass der Anwender das Script nicht mehr abbrechen kann. Es läuft von Anfang bis Ende durch. Das will ich aus so. Wenn ein Script ausgelöst wird, muss es von Anfang bis Ende durchlaufen. Es wäre für die Datenkonsistenz katastrophal, wenn ein Script mitten drin abgebrochen wird. Niemand weiß, was genau geändert worden ist und was nicht.

Beides erachte ich als sinnvoll, wenn Anwender die Datenbank bedienen! Aber was ist mit mir – in meiner Rolle als Entwickler? Gibt es Fehler, die ich nicht abfange? Ich nutze natürlich den Debugger, aber für den letzten Test arbeite ich im „Debug-Modus“.

If [ $$debug = 1 ]
Set Error Capture [ Off ]
Allow User Abort [ On ]
Else
Set Error Capture [ On ]
Allow User Abort [ Off ]
End If

Die Script-Schritte habe ich in ein Script gepackt, dass ich mit Perform Script anstelle des Befehls Set Error Capture [ On ] verwende.

Ich nutze eine globale Variable names $$debug, die ich gezielt ein- und ausschalten kann. Für „Sterbliche“ also Anwender wird immer der Else-Zweig genutzt. Also genau das Verhalten, dass ich eingangs beschrieben habe.

Wenn ich den Debug-Modus mit Set Variable [ $$debug ; Value: 1 ] einschalte, erreiche ich Folgendes: Fehler, die in der Laufzeit meines Scripts werden von FileMaker gemeldet. Ich kann Sie interpretieren und gegebenenfalls abfangen. Somit erreichen mich Fehlermeldung, die ich tatsächlich gar nicht auf dem Schirm hatte, da die Aufzeichnung eingeschaltet war.

Weiterhin habe ich den Vorteil, dass ich das Script in meiner Testumgebung leichter stoppen kann, um eine Script-Anpassung vorzunehmen.

Mit Set Variable [ $$debug ; Value: "" ] schalte ich den Debug-Modus wieder ab.

Ich habe mit diesem Debug-Modus viele Fehler ausmerzen können, die mir auf dem ersten Blick gar nicht bewusst waren.

Advertisements