如何使用window.onerror捕获所有javascript错误?(包括道场)

jar*_*moe 28 javascript error-handling dojo

这个问题是javascript的后续问题:如何在弹出警报中显示脚本错误?在哪里解释了如何使用以下方法捕获常规javascript错误:

<script type="text/javascript">
    window.onerror = function(msg, url, linenumber) {
        alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
        return true;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我试了一下,发现像这样的dojo erros:

TypeError: this.canvas is undefined         dojo.js (Row 446)
Run Code Online (Sandbox Code Playgroud)

没有使用这种方法报告,这引出了我的问题:

如何使用(尤其是dojo错误)报告所有 javascript错误window.onerror

Mil*_*eri 15

它可能是Dojo使用正确的错误处理方法(即try-catch块),它可以防止异常冒泡并到达窗口容器,您已在其上注册了错误处理程序.

如果这样,你就无法做到这一点.没有错误超过catch块,因此没有调用错误处理程序.

正如评论中所指出的,您还可以使用特定于浏览器的调试API,例如Venkman钩子,并执行打破错误 - 这种解决方案通常仅适用于特权代码(感谢@Sam Hanes).

您还可以On(require, 'error', function () {});在DOJO的异步脚本加载器上添加错误处理 - @buggedcom在评论中提到的另一点