我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>
更新
找到了一种获取行号和网址的方法。代码目前有点混乱,但可以工作,所以它应该让你开始......
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
同时,我找到了一种使用方法setTimeout
,但我希望可能有更好的方法:
setTimeout(function1);
setTimeout(function2);