try...catch...finally ステートメント
更新 : 2007 年 11 月
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 ブロックからエラーがスローされた場合にも実行されます。finallyStatments は、必ず実行されます。
使用例
JScript の例外処理の例を次に示します。
try {
print("Outer try running...");
try {
print("Nested try running...");
throw "an error";
} catch(e) {
print("Nested catch caught " + e);
throw e + " re-thrown";
} finally {
print("Nested finally is running...");
}
} catch(e) {
print("Outer catch caught " + e);
} finally {
print("Outer finally running");
}
これによって次の文字列が出力されます。
Outer try running..
Nested try running...
Nested catch caught an error
Nested finally is running...
Outer catch caught an error re-thrown
Outer finally running