📌  相关文章
📜  如何捕获所有 JavaScript 错误并将它们发送到服务器?

📅  最后修改于: 2022-05-13 01:56:40.281000             🧑  作者: Mango

如何捕获所有 JavaScript 错误并将它们发送到服务器?

今天有大量的 Web API 可用。其中之一是GlobalEventHandlers ,一个在引发错误时调用的OnErrorEventHandler

GlobalEventHandlersonerror属性是一个处理错误事件的EventHandler 。这对于捕获测试时从未发生的异常非常有用。不同的错误事件是:

  • 当发生 JavaScript 运行时错误时,会调用window.onerror()
  • 当资源加载失败时,将调用元素上的onerror()处理程序。这些错误事件可以通过将useCapture设置为 True 的window.addEventListener进行处理。

此浏览器事件onerror可以捕获所有 JavaScript 错误。这是记录客户端错误并将其报告给服务器的最简单方法之一。一个函数被分配给window.onerror ,如下所示:

句法:

window.onerror = function (msg, source, lineNo, columnNo, error) {
   // function to execute error handling
}

以下参数传递给分配给window.onerror的函数:

  1. msg :与错误相关的消息。
  2. source :与错误相关的脚本或文档的 URL。
  3. lineNo:行号。
  4. columnNo:列号。
  5. error:与此错误相关的 Error 对象。

如果返回值为真,则只处理错误。

例子:

  • 捕获错误:通过使用以下代码,我们可以捕获所有错误。
HTML


    
        
            Catch all JavaScript errors 
            and send them to server
        
    
    
        
        

            GeeksforGeeks         

                     Catch all JavaScript errors              and send them to server                  click here                     
    


Javascript
function captureError(err) {
  var errorData = {
    name: err.name, 
    message: err.line, 
    url: document.location.href,
    stack: err.stack 
  };
  $.post('/logger/js/', {
    data: errorData
  });
}


输出 :

  • 在服务器上发送错误:在您插入window.onerror以捕获尽可能多的错误信息后,只有最后一步,即将错误信息传输到您的服务器。在下面的示例中,我们使用jQuery 的 AJAX函数将数据传输到服务器:

Javascript

function captureError(err) {
  var errorData = {
    name: err.name, 
    message: err.line, 
    url: document.location.href,
    stack: err.stack 
  };
  $.post('/logger/js/', {
    data: errorData
  });
}