这个问题是javascript: how to display script errors in a popup alert?的后续问题,其中解释了如何使用以下方法捕获常规javascript错误:
<script type="text/javascript">
window.onerror = function(msg, url, linenumber) {
alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
return true;
}
</script>
我试过了,发现像这样的道场错误:
TypeError: this.canvas is undefined dojo.js (Row 446)
没有报告使用这种方法,这引出了我的问题:
如何使用window.onerror
报告所有 javascript错误(特别是dojo错误)?
答案 0 :(得分:14)
可能是Dojo正在使用正确的错误处理方法(即try-catch块),这可以防止异常冒泡并到达已注册错误处理程序的窗口容器。
如果是这样,那么 无法执行此操作。没有错误超过catch块,因此没有调用错误处理程序。
正如评论中所指出的,您还可以使用特定于浏览器的调试API,例如Venkman钩子,并执行错误解决 - 这种解决方案通常仅适用于特权代码(感谢@Sam Hanes)。 / p>
你也可以On(require, 'error', function () {});
在DOJO的异步脚本加载器上添加错误处理 - @buggedcom评论中提到的另一点
答案 1 :(得分:1)
你可以写这样的代码:
var goErrHandler=window.onerror;
goErrHandler= function(msg, url, linenumber) {
console.log('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
return true;
}
goErrHandler();
所以在控制台中你会看到这样的事情:
Error message: undefined
URL: undefined
Line Number: undefined
答案 2 :(得分:1)
更好的解决方案是使用try / catch,例如
try{
if(a=='a'){
}
}catch(e){
alert(e);
//or send to server
new Image().src='errorReport.php?e='+e;
}
Google Plus似乎使用此功能。