OnError() [v1.1.29+]

Registriert eine Funktion, die jedes Mal automatisch aufgerufen wird, wenn ein unbehandelter Fehler auftritt.

OnError(Rückruf , HinzufügenEntfernen)

Parameter

Rückruf

Ein Funktionsname oder Funktionsobjekt, der/das aufgerufen werden soll. Um einen Funktionsnamen zu übergeben, setzen Sie ihn in Anführungszeichen.

Die Rückruffunktion akzeptiert einen Parameter und kann wie folgt definiert werden:

MeinRückruf(Ausnahme) { ...

Es spielt keine Rolle, welchen Namen Sie dem Parameter geben, allerdings wird ihm als Wert der geworfene Wert oder das Exception-Objekt zugewiesen. Wenn es sich um ein Objekt handelt, kann es geändert werden, um den angezeigten Inhalt des regulären Fehlerdialogfensters zu ändern.

Der Parameter der Rückruffunktion kann weggelassen werden, wenn die entsprechende Information nicht benötigt wird.

Die Rückruffunktion kann einen Integer ungleich 0 zurückgeben, um das reguläre Fehlerdialogfenster zu unterdrücken.

HinzufügenEntfernen

Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie eine der folgenden Zahlen an:

Bemerkungen

Rückruf wird nur bei Fehlern oder Ausnahmen aufgerufen, die normalerweise zu einer Fehlermeldung führen würden. Ladezeitfehler gehören nicht dazu, da OnError erst nach dem Laden des Skripts aufgerufen werden kann.

Wenn eine Rückruffunktion einen Integer ungleich 0 via Return zurückgibt, wird der Thread beendet. Wenn innerhalb einer Rückruffunktion ein Fehler auftritt (oder eine Ausnahme ausgelöst wird), wird eine Fehlermeldung für den neuen Fehler angezeigt und der Thread beendet. Andernfalls werden alle Rückruffunktionen aufgerufen, eine Fehlermeldung angezeigt und der Thread beendet.

Rückruf wird im aktuellen Thread vor seiner Beendigung aufgerufen (also bevor der Aufrufstapel abgearbeitet wurde).

Try, Catch, Throw, OnExit

Beispiele

Protokolliert vom Skript verursachte Fehler in einer Textdatei, anstatt sie dem Benutzer anzuzeigen.

OnError("FehlerProtokollieren")
%Fehler% := auslösen

FehlerProtokollieren(Exc) {
    FileAppend % "Fehler bei Zeile " Exc.Line ": " Exc.Message "`n"
        , Fehlerprotokoll.txt
    return true
}

Dasselbe wie oben, aber mit einem Funktionsobjekt.

OnError(FehlerProtokollieren)
%Fehler% := auslösen

class FehlerProtokollieren {
    Call(Exc) {
        FileAppend % "Fehler bei Zeile " Exc.Line ": " Exc.Message "`n"
            , Fehlerprotokoll.txt
        return true
    }
}