try...catch...finally ステートメント

JScript のエラー処理機能を実装します。

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

引数

  • tryStatements
    省略可能です。 エラーが発生する可能性のあるステートメントを指定します。

  • exception
    必ず指定します。 任意の変数名を指定します。 exception の初期値は、スローされたエラーの値です。

  • catchStatements
    省略可能です。 tryStatement で発生しているエラーを処理するためのステートメントを指定します。

  • finallyStatements
    省略可能です。 他のエラー処理がすべて発生すると無条件に実行されるステートメントを指定します。

解説

try...catch...finally ステートメントでは、コード内の所定のブロックで発生する可能性のあるエラーの一部またはすべてに対して、コードを実行しながらエラー処理を実行できます。 プログラマによって対処されていないエラーが発生した場合は、エラー処理が存在しなかったかのように、通常のエラー メッセージが表示されます。

引数 tryStatements にはエラーが発生する可能性のあるコードを指定し、引数 catchStatements には発生したエラーを処理するコードを指定します。 tryStatements でエラーが発生した場合、catchStatements にプログラムの処理が渡されます。 exception の初期値は、tryStatements で発生したエラーの値です。 エラーが発生しないと、catchStatements は実行されません。

tryStatements で発生したエラーが、対応する catchStatements で処理できない場合は、そのエラーをより上位のエラー ハンドラーに throw ステートメントで通知するかまたは再度スローしてください。

tryStatements のすべてのステートメントが実行され、catchStatements でいずれかのエラー処理が発生すると、finallyStatements のステートメントが無条件に実行されます。

finallyStatements 内部のコードは、return ステートメントが try ブロック内か catch ブロック内にある場合、または catch ブロックからエラーがスローされた場合にも実行されます。 finallyStatements は、処理されないエラーが発生しない限り (たとえば、catch ブロック内でランタイム エラーが発生した場合など)、すべて必ず実行されます。

注意

混乱を招くような状況を避けるため、return ステートメントを finally ブロックで使用しないでください。 finally ブロックのコードは、try または catch ブロックの return ステートメントが見つかり、その return ステートメントが実行される前に実行されます。 この場合、return ステートメントが finally ブロックにあると、そのステートメントの方が try または catch ブロックの最初の return ステートメントよりも先に実行され、その結果、異なる戻り値が返される場合がありますbefore。

説明

エラーを発生させ、エラーのメッセージ、コード、および名前を表示する例を次に示します。

コード

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

説明

JScript の例外処理の例を次に示します。

コード

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

必要条件

Version 5

参照

参照

throw ステートメント

Error オブジェクト