1

window.onerror(message,url,line)よりも多くのデバッグ情報が得られるため、エラー メッセージをログに記録していましたtry{}catch(e){}

ただし、次の点を考慮してください。

function1(); // Generates error
function2(); // Will not be executed

window.onerror を使用しているときに function2確実に起動するようにするにはどうすればよいですか?

4

3 に答える 3

2

それはいけません。後でコードを実行できるエラー処理が必要な場合は、try..catch を使用する必要があります。

幸いなことに、JavaScript には VB6 のものと同等のものはありませんOn Error Resume Next。そこにある多くの悪い JavaScript コードをさらに悪化させるでしょう。

于 2012-05-08T09:34:38.783 に答える
1

ここでフィドルのフォークを作成しました。私がしたことは、キャッチされたエラーで window.onerror イベントを明示的にトリガーすることだけでした。

本当であることがほとんど良いようです:)

try
{
    function2();
}
catch(error)
{
    window.onerror(error);
}

</p>

アップデート

行番号とURLをすべて同じように取得する方法を見つけました。現時点ではコードが少し乱雑ですが、機能しているので、すぐに始められるはずです...

try
{
    function1();
}
catch(error)
{
    var url = error.stack.split('\n')[1].match(/\(.+\)/g)[0];
    var line = url.match(/\/\:[0-9]+.+$/g)[0];
    url = url.replace('(','').replace(line,'');
    line = line.replace(')','').replace('/:','')
    window.onerror(error,url,line);
}

そして、これが作業中のjsfiddleです

于 2012-05-08T10:03:52.793 に答える
0

それまでの間、私は を使用する方法を見つけましたsetTimeoutが、もっと良い方法があることを願っています:

setTimeout(function1);
setTimeout(function2);    

http://jsfiddle.net/7y2Ej/1/を参照してください

于 2012-05-08T09:47:57.637 に答える