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>

更新

找到了一种获取行号和网址的方法。代码目前有点混乱,但可以工作,所以它应该让你开始......

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 回答