0

遅延ロードされたJavaScriptでエラー処理を行う方法を知っている人はいますか? 私は、ajax リクエストが呼び出され、コードがグローバル スコープで評価されるアプローチを使用しています。実行時エラーが発生すると、遅延読み込みスクリプトとしてファイル名が出力され、行番号はエラー行に読み込みスクリプトの eval の行番号を加えたものになります。これは、すべての JavaScript ファイルがサイトのセクションのモジュールに結合されることを除けば、それほど悪くはありません。JavaScript ファイル自体の周りの try catch は、関数の実行時エラーをキャッチしません。何か案は?Window.onerror は正しいファイル名を提供しないため、問題外です。当たる前に捕まえないといけない。

私はプログラムで eval されたコード内のすべての関数の周りに try catch を含めることができるかもしれないと考えていました (これは醜いです)、しかしそれはウィンドウレベルで行われるので、eval されたコードに具体的かつ動的にアクセスする方法がわかりません. javascript が "Bob" という名前のオブジェクトである場合、window.Bob にアクセスできますが、動的にアクセスする必要があります。

4

1 に答える 1

1

問題は解決しましたが、最もエレガントな解決策ではありません。基本的に私がしていることは次のとおり
です。 1. サイトが読み込まれた後、ウィンドウにあるすべてのオブジェクトを調べて、それらを配列にプッシュします。これは基本的に私のコードに、これらのオブジェクトを無視するように言います。

  1. コードをモジュール化するとき、モジュールに配置されるファイルとファイル名の長さを追跡します。

  2. モジュライザーの最後の行は、fileLength 配列と lineLengths を受け取り、エラー処理オブジェクトの関数を呼び出します。

  3. エラー処理コードは、window で新しいオブジェクトを見つけます。それらが存在する場合は、fileLengths と fileNames に一致するようにプロパティを設定します。

  4. 新しいオブジェクトを再帰し、関数を装飾して、それらの周りに try キャッチを追加します。

  5. それらのキャッチの 1 つがヒットしたら、上にトラバースしてプロパティを見つけます。

  6. プロパティに基づいてファイルと行番号を計算します。

  7. 正しいファイルと行番号に基づいて新しいエラーを出力します。

はい醜い...しかし、それは動作します。

于 2010-09-09T12:39:15.533 に答える