开发者社区> 问答> 正文

在JavaScript中,如何全局捕获大部分运行时的异常?

在JavaScript中,如何全局捕获大部分运行时的异常?

展开
收起
萝卜丝丸子 2024-08-28 11:39:10 68 0
2 条回答
写回答
取消 提交回答
  • 可以通过为window对象设置onerror事件处理器来全局捕获大部分运行时的异常,包括同步和异步任务的异常(除了Promise异常)。使用方法如下:

     window.onerror = function(message, source, lineno, colno, error) { 
     logger.log('捕获到异常:', { message, source, lineno, colno, error }); 
     }
    
    2024-08-28 15:41:32
    赞同 70 展开评论 打赏
  • 可以使用window.onerror事件处理器。这个方法可以监听并处理全局范围内的未被捕获的错误。以下是一个简单的示例

    window.onerror = function(message, fileName, lineNumber, columnNumber, error) {
        // message: 错误信息
        // fileName: 发生错误的文件名
        // lineNumber: 发生错误的行号
        // columnNumber: 发生错误的列号(某些浏览器可能不支持)
        // error: 错误对象(某些浏览器可能不支持)
    
        console.error("发生了一个错误:", message, "在文件:", fileName, "行号:", lineNumber);
    
        // 返回true可以阻止默认的错误处理行为(比如在控制台显示错误信息)
        // 如果你希望仍然在控制台看到原始错误信息,可以返回false
        return true;
    };
    

    但是window.onerror不能捕获到由Promise.reject()或async/await中未被捕获的reject错误,对于这些情况,需要使用process.on('unhandledRejection')在Node.js环境中,或者在浏览器环境中利用window.addEventListener('unhandledrejection', ...)

    image.png

    参考文档

    2024-08-28 12:29:20
    赞同 61 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载