Beispielanwendung zum Errorhandling - WpsErrorApp

Die richtige Fehlerbehandlung in Skripten ist eine der wichtigsten Aufgaben der Skriptprogrammierung, hier sollen die allgemeine Fehlerbehandlung in JavaScript und die spezielle Fehlerbehandlung mit Adobe InDesign Scripting behandelt werden.
(ErrorHandling with Adobe InDesign Scripting)
Antworten
wernerperplies
Beiträge: 185
Registriert: 6. Aug 2011, 17:48
Wohnort: 18374 Zingst
Kontaktdaten:

Beispielanwendung zum Errorhandling - WpsErrorApp

Beitrag von wernerperplies » 16. Apr 2017, 09:55

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


Zuletzt als neu markiert von wernerperplies am 16. Apr 2017, 09:55.
einen schönen Tag wünscht

Werner Perplies
https://www.weepee.de

Antworten

Zurück zu „InDesign Script Programming - Errorhandling“