检测所有JS错误,使用JS

问题描述 投票:0回答:2

我知道以前可能有人问过这个问题,但我找不到在哪里:

我知道你可以使用扩展来检测 JS 错误,但是有没有办法使用 JavaScript 检测所有错误并在出现错误时显示警报?

javascript error-handling
2个回答
28
投票

在浏览器中定义

window.onerror
函数。在附加到
uncaughtException
事件的节点中,带有
process.on()

如果您需要捕获所有错误,例如在规范运行器或 console.log/ 调试实现中,则应该仅使用。否则,当你试图追踪奇怪的行为时,你会发现自己处于一个受伤的世界。就像一些人所建议的那样,在正常的日常代码中,

try / catch
块是处理错误/异常的正确且最好的方法。

对于前一种情况的参考,请参阅this(关于浏览器中的window.error)this(关于节点中的uncaughtException)。例子:

浏览器

window.onerror = function(error) {
  // do something clever here
  console.log(error);
};

Node.js

process.on('uncaughtException', function(error) {
  // do something clever here
  console.log(error);
});

0
投票

浏览器中的JS

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        var lastErr;
        function errHand(e) {
            lastErr = e;
            switch (e.target.nodeName) {
                case 'SCRIPT':
                    alert('script not found: ' + e.srcElement.src);
                    break;
                case 'LINK':
                    alert('css not found: ' + e.srcElement.href);
            }
            return false;
        }
        window.onerror = function (msg, url, lineNo, columnNo, error) {
            alert(msg + ' - ' + url + ' - ' + lineNo + ' - ' + columnNo);
            return false;
        }
    </script>
    <script src="http://22.com/k.js" onerror="errHand(event)"></script>
    <link rel="stylesheet" href="http://22.com/k.css" onerror="errHand(event)" type="text/css" />
</head>
<body>
    <script>
        not_exist_function();
    </script>
</body>
</html>
  • 这适用于附加的js文件跟踪错误仅在同源主机环境
  • 对于像 Ajax/WebSocket 这样的请求错误处理,最好使用它们的 Bulit-In 函数
  • 控制台功能覆盖不适用于读取自动生成的浏览器错误日志此时使用最新的浏览器更新

对于 NodeJS

process.on('uncaughtException', function (err) {
    console.error('uncaughtException:\n' + err.stack + '\n');
})

在代码顶部使用它们

© www.soinside.com 2019 - 2024. All rights reserved.