我知道以前可能有人问过这个问题,但我找不到在哪里:
我知道你可以使用扩展来检测 JS 错误,但是有没有办法使用 JavaScript 检测所有错误并在出现错误时显示警报?
在浏览器中定义
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);
};
process.on('uncaughtException', function(error) {
// do something clever here
console.log(error);
});
浏览器中的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>
对于 NodeJS
process.on('uncaughtException', function (err) {
console.error('uncaughtException:\n' + err.stack + '\n');
})
在代码顶部使用它们