Freigeben über


try...catch...finally-Anweisung

Implementiert die Fehlerbehandlung für JScript.

try {
   [tryStatements]
} catch(exception) {
   [catchStatements]
} finally {
   [finallyStatements]}

Argumente

  • tryStatements
    Optional. Anweisungen, in denen ein Fehler auftreten kann.

  • Ausnahme
    Erforderlich. Ein beliebiger Variablenname. Der Anfangswert von exception ist der Wert des ausgelösten Fehlers.

  • catchStatements
    Optional. Anweisungen zur Behandlung von Fehlern, die in den zugehörigen tryStatements auftreten.

  • finallyStatements
    Optional. Anweisungen, die ohne Bedingung ausgeführt werden, nachdem die Behandlung sämtlicher Fehler abgeschlossen ist.

Hinweise

Die try...catch...finally-Anweisung bietet eine Möglichkeit, einige oder alle möglichen Fehler zu behandeln, die in einem bestimmten Codeblock auftreten können, während dieser Code noch ausgeführt wird. Treten Fehler auf, die vom Programmierer nicht behandelt wurden, erhält der Benutzer die übliche JScript-Fehlermeldung, als wäre keine Fehlerbehandlung implementiert.

tryStatements enthalten Code mit Informationen, wo ein Fehler auftreten kann, während catchStatements Code zur entsprechenden Fehlerbehandlung im Fall eines Fehlers enthalten. Tritt ein Fehler in den tryStatements auf, wird die Programmsteuerung zur Behandlung an die catchStatements übergeben. Der Startwert von exception entspricht dem Wert des in den tryStatements aufgetretenen Fehlers. Wenn keine Fehler auftreten, werden auch keine catchStatements ausgeführt.

Kann der in den betroffenen tryStatements aufgetretene Fehler nicht mithilfe der zugehörigen catchStatements behandelt werden, verwenden Sie die throw-Anweisung, um den Fehler an einen Fehlerhandler auf höherer Ebene zu übergeben bzw. ihn erneut auszulösen.

Nachdem alle Anweisungen in den tryStatements ausgeführt wurden und alle Fehlerbehandlungen in den catchStatements abgeschlossen sind, werden die Anweisungen in den finallyStatements ohne Bedingung ausgeführt.

Der Code in finallyStatements wird auch dann ausgeführt, wenn im try-Block oder im catch-Block eine return-Anweisung enthalten ist oder ein Fehler in einem catch-Block ausgelöst wird. Alle finallyStatements werden garantiert ausgeführt, sofern kein nicht behandelter Fehler auftritt (z. B. ein Fehler, der zu einem Laufzeitfehler im catch-Block führt).

Tipp

Um diese potenziell unübersichtliche Situation zu vermeiden, sollten Sie in finally-Blöcken keine return-Anweisungen verwenden. Der Code in einem finally-Block wird nach einer return-Anweisung in einem try-Block oder catch-Block ausgeführt, allerdings bevor diese return-Anweisung ausgeführt wird. In solchen Situationen wird eine return-Anweisung im finally-Block before der ersten return-Anweisung ausgeführt, sodass ein anderer Rückgabewert ausgegeben wird.

Beispiele

Beschreibungen

Das folgende Beispiel bewirkt, dass ein Fehler ausgelöst wird. Zusätzlich werden Fehlermeldung, -code und -name angezeigt.

Code

try
{
    var arr = new Array(-1);
}
catch(e)
{
    print ("Error Message: " + e.message);
    print ("Error Code: " + (e.number & 0xFFFF))
    print ("Error Name: " + e.name);
}

// Output:
//  Error Message: Array length must be zero or a positive integer
//  Error Code: 5029
//  Error Name: RangeError

Beschreibungen

Das folgende Beispiel veranschaulicht die Funktionsweise der JScript-Ausnahmebehandlung.

Code

try
    {
    print("Outer try is running");
 
    try
        {
        print("Nested try is running");
        throw new Error(301, "an error");
        }
    catch(e)
        {
        print("Nested catch caught " + e.message);
        throw e;
        }
    finally
        {
        print("Nested finally is running");
        }   
    }
catch(e)
    {
    print("Outer catch caught " + e.message);
    }
finally
    {
    print("Outer finally is running");
    }

// Output:
//  Outer try is running
//  Nested try is running
//  Nested catch caught an error
//  Nested finally is running
//  Outer catch caught an error
//  Outer finally is running

Anforderungen

Version 5

Siehe auch

Referenz

throw-Anweisung

Error-Objekt