向服务器发送处理(不仅仅是未经用处)的JavaScript错误(不仅是未经处理的)



我正在尝试将所有JavaScript异常(以及未经处理的JavaScript)发送到服务器以进行记录。我已经浏览了window.onerror文档,还介绍了这一问题,但它们仅适用于未经手的例外。

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

一种"痛苦"的方法是将我的logToServer()函数手动连接到我的代码中的每个catch()块(也有效),但我希望有更好的解决方案。

我已经在下面设置了一些片段。

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);
};
Enable logs in console.

window。如果您发现任何例外,此事件将不会开火。您必须在所有试用块中明确进行。在Catch Block中,您将不得不提出异常。语法很简单:

try{
    //Your try logic
}
catch(ex){
   // Your catch logic comes here
   throw ex; //This will throw exception and window.onerror will be fired.
}

最新更新