Error-Objekt

class Error extends Object

Error-Objekte werden vom internen Code via Throw ausgelöst, wenn ein Laufzeitfehler auftritt, können aber auch explizit vom Skript ausgelöst werden.

Inhaltsverzeichnis

Standardeigenschaften

Message: Eine Fehlermeldung.

What: Was die Ausnahme ausgelöst hat. Enthält normalerweise den Namen einer Funktion, ist aber leer bei Ausnahmen, die durch einen Fehler in einem Ausdruck ausgelöst wurden (z.B. wenn ein mathematischer Operator für einen nicht-numerischen Wert verwendet wird).

Extra: Ein Zeichenkettenwert, der sich auf den Fehler bezieht, falls vorhanden. Wenn dieser Wert in eine nicht-leere Zeichenkette umgewandelt werden kann, wird im regulären Fehlerdialogfenster eine Zeile mit "Specifically:" gefolgt von dieser Zeichenkette angezeigt.

File: Der vollständige Pfad der Skriptdatei, die die Zeile enthält, in der der Fehler auftrat oder das Error-Objekt konstruiert wurde.

Line: Die Nummer der Zeile, in der der Fehler auftrat oder das Error-Objekt konstruiert wurde.

Stack: Eine Zeichenkette, die den Aufrufstapel zum Zeitpunkt der Konstruktion des Error-Objekts repräsentiert. Jede Zeile kann wie folgt formatiert sein:

File (Line) : [What] Quellcode`r`n
Repräsentiert einen Aufruf der What-Funktion. File und Line geben die aktuelle Skriptzeile in dieser Stapeltiefe an. Quellcode ist die ungefähre Darstellung des tatsächlichen Quellcodes in dieser Zeile, wie in ListLines angezeigt.
> What`r`n
Repräsentiert den Start eines Threads, typischerweise die direkte Ursache für den Funktionsaufruf darüber.
... N more
Gibt an, dass der Stacktrace gekürzt wurde und dass n weitere Stackeinträge nicht angezeigt werden. Aktuell kann die Stack-Eigenschaft 2047 Zeichen nicht überschreiten.

Hinweis: Das reguläre Fehlerdialogfenster erfordert, dass Message, Extra, File und Line eigene Werteigenschaften sind.

Error()

Erstellt ein Error-Objekt.

NewError := Error(Message , What, Extra)

Error kann mit einer der unter Fehlertypen aufgeführten Unterklassen ersetzt werden, wobei einige Unterklassen andere Parameter akzeptieren.

Die Parameter entsprechen direkt den oben beschriebenen Eigenschaften, können aber bei Error-Unterklassen, die die Methode __New überschreiben, abweichen.

Message und Extra werden in Zeichenketten umgewandelt. Diese werden in einem Fehlerdialogfenster angezeigt, wenn die Ausnahme ausgelöst, aber nicht abgefangen wurde.

What gibt die Quelle des Fehlers an. Dies kann eine beliebige Zeichenkette sein, sollte aber besser ein negativer Integer oder der Name einer laufenden Funktion sein. Die Angabe von -1 gibt die aktuelle Funktion an, -2 die Funktion, die sie aufgerufen hat, und so weiter. Wenn das Skript kompiliert ist oder der Wert keinen gültigen Stack-Frame identifiziert, wird der Wert lediglich in eine Zeichenkette umgewandelt und NewError.What zugewiesen. Andernfalls wird der identifizierte Stack-Frame wie folgt verwendet, um die anderen Eigenschaften zu ermitteln:

Die Verwendung des What-Parameters gibt einer komplexen Funktion die Möglichkeit, Hilfsfunktionen zu verwenden, um ihre Arbeit oder Parametervalidierung auszuführen, während diese internen Details aus allen gemeldeten Fehlerinformationen weggelassen werden. Zum Beispiel:

MeineFunktion(a, b) {
    CheckArg "a", a
    CheckArg "b", b
    ;...
    CheckArg(name, value) {
        if value < 0
            throw ValueError(name " ist negativ", "MeineFunktion", value)
    }
}

try
    MeineFunktion(1, -1)  ; err.Line gibt diese Zeile an.
catch ValueError as err
    MsgBox Format("{1}: {2}.`n`nFile:`t{3}`nLine:`t{4}`nWhat:`t{5}`nStack:`n{6}"
        , type(err), err.Message, err.File, err.Line, err.What, err.Stack)
try
    EineFunktion()
catch as e
    MsgBox(Type(e) "in " e.What ", das auf Zeile " e.Line " aufgerufen wurde.")

EineFunktion() {
    throw Error("Fehler", -1)
}

Fehlertypen

Die folgenden Unterklassen von Error sind vordefiniert:

Fehler werden auch unter Verwendung der Basis-Error-Klasse ausgelöst.

Throw, Try, Catch, Finally, OnError