私の同僚は、javascriptでtry catchブロックをたくさん使用すると、パフォーマンスが低下するだろうと言っていました。その主張は本当ですか、もしそうなら、なぜですか?
2 に答える
短い答え、はい、彼は正しいです。声明は、機能するtry/catch
ために内部で特定のことに関係しています。たとえば、スコープルックアップチェーンを拡張しますが(最近の環境ではそれほど大きな問題ではない可能性があります)、特に、スローされたエラーがあるかどうかを判断するために、その中にあるコードを評価する必要があります。try-block
とにかく、try/catch
ブロックはコードを安定させる絶好の機会です。ただし、常に可能な限りコードのごく一部に適用する必要があります。もちろん、それが本当に必要な場合にのみ適用する必要があります(たとえば、回避できないブラウザー固有のバグ/エラーを回避するなど)。すべてのスクリプトのように1つの大きなブロックに入れるだけtry/catch
でも、間違いなく最悪のアイデアです。
はい。dev.opera.comにそれに関する良い記事があります。
これは、try-catch-blockが結果オブジェクトの特定の異常な処理を行うため、そのタイプがであるかどうかを確認する必要があるためと考えられますthrow
。そして、catch
ブロックの実行は、コードで見られるほど簡単ではありません。詳細については、Ecmascript§12.14:try
ステートメントを参照してください。
それでも、try-catch-clausesは強力な機能であり、適切で有用な場合はそれらを使用する必要があります。ただし、パフォーマンスが重要な関数内に配置するのではなく、頻繁に実行されないようにラップアラウンドする必要があります。