1. ホーム
  2. javascript

[解決済み] Javascriptでは、例外が発生しない場合でもtry-catchブロックを使用すると高くつきますか?

2023-07-20 11:51:10

質問

複数のtry-catchブロックで例外が発生しない場合、try-catchブロックを複数使用することは遅いですか?私の質問は、次のものと同じです。 この1つ と同じですが、JavaScriptのためのものです。

例えば、トライキャッチブロックを持つ20の関数と、その20の関数をすべて呼び出す別の関数があるとします。 ここで、どれも例外を投げない . このトライキャッチブロックのために、私のコードの実行速度が遅くなったり、パフォーマンスが大幅に低下したりするのでしょうか?

どのように解決するのですか?

典型的な CRUD UI コードをしていませんか?try キャッチを使用し、コードに散りばめられている理由もなく 10000 に達するループを使用し、hell、angular/ember を使用します - あなたはパフォーマンスの問題に気づくことはありません。

低レベルのライブラリ、物理シミュレーション、ゲーム、サーバーサイドなどを行っている場合、トライキャッチブロックを決して投げないことは通常まったく問題になりませんが、問題は V8 がエンジンのバージョン 6 まで最適化コンパイラーでそれをサポートしなかったことです。しかし、この問題は簡単に回避することができます。 tryCatch :

function tryCatch(fun) {
    try {
        return fun();
    }
    catch(e) {
        tryCatch.errorObj.e = e;
        return tryCatch.errorObj;
    }
}
tryCatch.errorObj = {e: null};


var result = tryCatch(someFunctionThatCouldThrow);
if(result === tryCatch.errorObj) {
    //The function threw
    var e = result.e;
}
else {
    //result is the returned value
}

V8 バージョン 6 (Node 8.3 と最新の Chrome に同梱) 以降は、以下のコードのパフォーマンスが向上しました。 try-catch の中のコードのパフォーマンスは、通常のコードと同じです。