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.
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
> What`r`n
... N more
Stack
-Eigenschaft 2047 Zeichen nicht überschreiten.Hinweis: Das reguläre Fehlerdialogfenster erfordert, dass Message, Extra, File und Line eigene Werteigenschaften sind.
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:
NewError.What
enthält den Namen der Funktion.NewError.Line
und NewError.File
geben die Zeile an, die die Funktion aufgerufen hat.NewError.Stack
enthält einen partiellen Stacktrace, mit dem angegebenen Stackframe ganz oben.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) }
Die folgenden Unterklassen von Error sind vordefiniert:
OSError(Code)
, wobei Code numerisch ist, setzt Number und Message gemäß dem angegebenen systemdefinierten Fehlercode. Wenn Code weggelassen wird, wird standardmäßig A_LastError verwendet. Zum Beispiel gibt OSError(5).Message
"(5) Zugriff verweigert" zurück.Fehler werden auch unter Verwendung der Basis-Error-Klasse ausgelöst.