Mit dieser Beispielanwendung möchte ich zeigen, wie man eine informative Fehlerbehandlungsroutine in JavaScript-Anwendungen einbauen kann.
Die Anwendung verwendet zwei selbst entwickelte Hilfsklassen:
- WpsLogClass
- WpsErrorHandler
Diese Klasse erlaubt die vollständige Verwaltung von Protokolldateien:
- Einrichtung von Protokolldateien mit einer frei definierbaren Anzahl von Protokolldatein:
Code: Alles auswählen
// gO: globales Objekt der Applikation, enthält u. a. Meldungen // logFileName: vollständiger Dateiname // multiInstances: Anzahl der Protokolldateien // nach Überschreiben der Anzahl wird die älteste Datei gelöscht // Die Dateinamen sind durchnummeriert, die neueste Version // heißt: 01Dateiname... // Einrichtung des Objektes var log = new Log(gO, logFileName, multiInstances);
- Zufügen von Inhalten
Code: Alles auswählen
// gO: globales Objekt der Applikation, enthält u. a. Meldungen // conten2Add -> der hinzuzufügende Text log.add2LogFile(gO, content2Add);
Diese Klasse bietet umfassende Fehlerbehandlungsmethoden:
- Einrichtung des Fehlerbehandlungsobjektes
Code: Alles auswählen
// gO: globales Objekt der Applikation, enthält u. a. Meldungen // logFileName: vollständiger Dateiname // multiInstances: Anzahl der Protokolldateien // nach Überschreiben der Anzahl wird die älteste Datei gelöscht // Die Dateinamen sind durchnummeriert, die neueste Version // heißt: 01Dateiname... // Einrichtung des Objektes var errorHandler = new LoMyError(gO, logFileName, multiInstances);
- Fehlerausgabe
Code: Alles auswählen
// Aufruf der Fehlerbehandlungsroutine // Parameter: // 1. Objekt: das "gefangene" Fehlerobjekt // 2. Objekt: vordefiniertes Objekt, das die Argumente der lokalen Funktion enthält // 3. Array: den aktuellen Aufrufstack // 4. int: == -1 -> Fehlernummer des Systems, > -1 -> selbst definierte Fehlernummer // 5. boolean: true: ausführliche Meldung im Meldungsfenster, false kurze Meldung // 6. boolean: true: Meldungsausgabe mit alert, false: Fehler werden nur protokolliert, keine Meldungsausgabe errorHandler.doError(error, callee.arguments, $.stack, -1, true, false);
Code: Alles auswählen
function DoSomething(errorhandler)
try
{
...
}
catch(error)
{
errorHandler.doError(error, callee.arguments, $.stack, -1, true, false);
}
Code: Alles auswählen
function DoSomething2(errorhandler)
try
{
...
}
catch(error)
{
errorHandler.doError(new Error("Eigenes Fehlerobjekt"), callee.arguments, $.stack, 5, true, false);
}
Code: Alles auswählen
function ThrowMyOwnError()
{
try
{
// throw own exception
// eigene Fehlerausnahme auslösen
throw new Error("Es ist ein Fehleraufgetreten!");
}
catch (error)
{
gO.myError.doError(error, callee.arguments, $.stack, 6, true, false);
}
return;
}
Auszug aus der Protokolldatei:
Code: Alles auswählen
Wps ErrorApp gestartet um Wed Dec 12 2012 19:01:18 GMT+0100
Seriennummer: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
InDesign: 6.0.0.352
Operating system: Windows XP 5.1 Service Pack 3
Wed Dec 12 2012 19:01:22 GMT+0100
Objekt unterstützt Eigenschaft oder Methode Pages nicht
in Zeile 79
Fehlernummer 55
Stack:
[WpsErrorApp.jsx]
main("Test der Fehlerobjek"...,"Fehler ausl\u00F6sen"...)
Argumente:
Funktionsargumente:
01: Test der Fehlerobjektes:
02: Fehler auslösen
*****
Wed Dec 12 2012 19:01:23 GMT+0100
Eigenes Fehlerobjekt
in Zeile 98
Fehlernummer -5
Stack:
[WpsErrorApp.jsx]
main("Test der Fehlerobjek"...,"Fehler ausl\u00F6sen"...)
Argumente:
Funktionsargumente:
01: Test der Fehlerobjektes:
02: Fehler auslösen
*****
WpsErrorApp.jsx
WpsLogClass.jsx
WpsErrorHAndler.jsx
StringClassEnhancements.jsx