3
SpiderMonkeyを使用すると、条件付きキャッチブロックを使用して、例外を適切なハンドラにルーティングできます。V8のSpiderMonkeyのキャッチと等価です。
MDNから
try {
// function could throw three exceptions
getCustInfo("Lee", 1234, "[email protected]")
}
catch (e if e == "InvalidNameException") {
// call handler for invalid names
bad_name_handler(e)
}
catch (e if e == "InvalidIdException") {
// call handler for invalid ids
bad_id_handler(e)
}
catch (e if e == "InvalidEmailException") {
// call handler for invalid email addresses
bad_email_handler(e)
}
catch (e){
// don't know what to do, but log it
logError(e)
}
の例では、しかし、V8で、このコードは文句を言わない、明白以外の任意の提案、または回避策をコンパイルします。
明白なことは、スイッチのステートメントは、おそらくもっと良い、あなたのther eは似たような実装ではありませんか? –
はい。 SpiderMonkeyの非標準的な拡張機能です。 –
サイドノート:特定のタイプの例外をキャッチしたくない場合は、スタックトレースなどの処理は行いません。 –