首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将已处理(而不仅仅是未处理)的Javascript错误发送到服务器

将已处理(而不仅仅是未处理)的Javascript错误发送到服务器
EN

Stack Overflow用户
提问于 2017-03-07 18:51:53
回答 1查看 316关注 0票数 0

我正在尝试将我所有的Javascript异常,无论是已处理的还是未处理的,都发送到服务器进行日志记录。我通过window.onerror documentationalso this post了解了这个问题,但它们只对未处理的异常有效。

如果异常已在catch()块中处理,则不会触发window.onerror

一种“痛苦”的方法是将我的logToServer()函数手动附加到代码中的每个catch()块(它也可以工作),但我希望有一个更好的解决方案。

我在下面设置了一个小代码片段。

代码语言:javascript
复制
var logToServer = function logToServer() {
  console.info('logToServer() called');
};
window.onerror = function(z, x, c, v, b) {
  console.info(z);
  console.info(x);
  console.info(c);
  console.info(v);
  console.info(b);

  // call a function to send to server
  logToServer();
};
window.addEventListener('error', function(z, x, c, v, b) {
  console.info(z);

  // call a function to send to server
  logToServer();
});

// test w/o catch-block
//console.info(err); // calls logToServer()

// test w/ catch-block
try {
  console.info(asd); // does not call logToServer()
} catch (err) {
  console.error(err);
};
代码语言:javascript
复制
Enable logs in console.

EN

回答 1

Stack Overflow用户

发布于 2017-03-07 22:51:49

仅当异常未处理时,才会触发window.onerror。如果您捕获到任何异常,此事件将不会触发。您必须在所有try--catch块中显式地执行此操作。在catch块中,你必须抛出异常。语法很简单:

代码语言:javascript
复制
try{
    //Your try logic
}
catch(ex){
   // Your catch logic comes here
   throw ex; //This will throw exception and window.onerror will be fired.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42646313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档