Java 言語と同じように、JavaScript は throw ステートメントを通じて例外をスローできます。 Java 言語とは異なり、JavaScript はエラー オブジェクトだけでなく、throw ステートメントを通じてあらゆる種類の値をスローできます。
試してみましょう{
「生のメッセージ」をスローします;
}キャッチ(メッセージ){
console.log(message);//生のメッセージ
console.log(メッセージの種類);//文字列
}
試してみましょう{
42 をスローします;
}キャッチ(コード){
console.log(code);//42
console.log(コードの種類);//数値
}
Java 言語と同様、どの catch ステートメントでも例外がキャッチされない場合、例外は最終的にユーザーにスローされます:
試してみましょう{
throw 42;//エラー: 42
がスローされます。
}ついに{
}
スローされた例外をキャッチするために、JavaScript は try/catch/finally ステートメントも使用します。使用規則は次のとおりです。try は必須であり、catch とfinally はオプションのステートメントですが、catch とfinally のうち少なくとも 1 つは指定する必要があります。
catch ステートメントでは、スローされた例外値を格納するパラメーター e (またはその他の有効な変数名) を定義できます。 catch ステートメント内では、このパラメータをローカル変数として使用できます。 JavaScript での他の変数の使用法とは異なり、catch ステートメント内のパラメーター変数は catch ステートメント内でのみ有効です (変数のスコープは catch ステートメントに限定されます)。
finally ステートメントの場合、try でスローされた例外があるかどうかに関係なく、finally のコードが実行されます。詳細は次のとおりです:
1. try ステートメントが実行されると例外は発生しません。finally のコードが実行されます。
2. try では例外は発生しませんが、break、 continue、return ステートメントの実行により try コードが終了すると、finally のコードが実行されます。
3. try で例外が発生しました。catch ステートメントによって例外が処理された後、finally のコードが実行されます。
4. try で例外が発生したが、catch ステートメントがないために例外を上向きにスローし続ける必要がある場合、最終的に のコードが実行されます。 catch ステートメントがない場合、JavaScript は最初にコードを実行し、その後例外をスローし続けることに注意してください。
finally コードで、break、 continue、または return ステートメントが出現すると、たとえ catch ステートメントが存在しなくても、JavaScript は try コード内に存在する可能性のある Break、 continue、または return ステートメントに関係なく、これらのステートメントを直接実行します。例外が発生すると、JS は例外レポート情報も破棄し、finally コード内の Break、Continue、または return ステートメントの実行を続行します。同様に、finally コードでも例外がスローされた場合、JavaScript は try コード内のすべての Break、 continue、または return ステートメントを破棄し、考えられる例外レポート動作も破棄して、finally コードでのみ例外をスローします。