window.onerror(message,url,line)
よりも多くのデバッグ情報が得られるため、エラー メッセージをログに記録していましたtry{}catch(e){}
。
ただし、次の点を考慮してください。
function1(); // Generates error
function2(); // Will not be executed
window.onerror を使用しているときに function2が確実に起動するようにするにはどうすればよいですか?
window.onerror(message,url,line)
よりも多くのデバッグ情報が得られるため、エラー メッセージをログに記録していましたtry{}catch(e){}
。
ただし、次の点を考慮してください。
function1(); // Generates error
function2(); // Will not be executed
window.onerror を使用しているときに function2が確実に起動するようにするにはどうすればよいですか?
それはいけません。後でコードを実行できるエラー処理が必要な場合は、try..catch を使用する必要があります。
幸いなことに、JavaScript には VB6 のものと同等のものはありませんOn Error Resume Next
。そこにある多くの悪い JavaScript コードをさらに悪化させるでしょう。
ここでフィドルのフォークを作成しました。私がしたことは、キャッチされたエラーで 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);
}
それまでの間、私は を使用する方法を見つけましたsetTimeout
が、もっと良い方法があることを願っています:
setTimeout(function1);
setTimeout(function2);
http://jsfiddle.net/7y2Ej/1/を参照してください