Seite 1 von 1

Beispielanwendung zum Errorhandling - WpsErrorApp

Verfasst: 16. Apr 2017, 09:55
von wernerperplies
Download (erfordert Anmeldung/Registrierung im Forum): WpsErrorHandler
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
WpsLogClass
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);
WpsErrorHandler
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);
    
Die typische Fehlerbehandlung könnte dann so aussehen:

Code: Alles auswählen

function DoSomething(errorhandler)
try
{
...
}
catch(error)
{
    errorHandler.doError(error, callee.arguments, $.stack, -1, true, false);
}
oder mit eigenem Fehlerobjekt

Code: Alles auswählen

function DoSomething2(errorhandler)
try
{
...
}
catch(error)
{
    errorHandler.doError(new Error("Eigenes Fehlerobjekt"), callee.arguments, $.stack, 5, true, false);
}
oder mit der Erzeugung einer eigenen Ausnahme

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;
    }
Beispiel einer Fehlermeldung:
Bild

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
*****
Im Anhang finden Sie als Zip-Datei alle benötigten Skriptdateien:
WpsErrorApp.jsx
WpsLogClass.jsx
WpsErrorHAndler.jsx
StringClassEnhancements.jsx