`
2008winstar
  • 浏览: 57798 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • chenke: 写的很好,也可以看看那这个文章,我感觉学的还可以。http:/ ...
    HTML

JavaScript异常处理

阅读更多

window.localStorage在尝试写入数据超过容量限制时会抛异常,在Safari的隐私浏览模式下也会如此。因此,需要把调用放到try-catch语句里面:

try {
    localStorage.setItem('date', Date.now());
} catch (error) {
    reportError(error);
}

 

有时候,需要把回调函数的代码放到try-catch里面,因为回调也可以调用其他会抛出异常的API。

listeners.forEach(function(lietener){
    try {
        listener();
    } catch (error) {
    reportError(error);
    }
})

 

对于try-catch覆盖不到的地方,如果出现异常就只能通过window.onerror来捕获了:

window.onerror = function(errorMessage, scriptURI, lineNumber) {
    reportError({
        message: errorMessage,
        script: scriptURI,
        line: lineNumber
    });
};

  

通常不使用window.addEventlistener或window.attachEvent的形式监听window.onerror。因为很多浏览器只实现了window.onerror,或者是只有window.onerror的实现是标准的。

 

通过window.onerror方式捕获异常,可以也只能获取异常的3个信息(参数)。而通过try-catch捕获到的异常,可以获取:错误类型(name)、错误消息(message)、脚本文件地址(script)、行号(line)、列号(column)、堆栈跟踪(stack),这些信息都在Error对象上(主流浏览器都支持)。

 

在自定义的Error对象中,error.message可以自由控制。

 

浏览器厂商也知道大家在使用 window.onerror 时受到的限制,所以开始往 window.onerror 上面添加新的参数。考虑到只有行号没有列号好像不是很对称的样子,IE 首先把列号加上了,放在第四个参数。然而大家更关心的是能否拿到完整的堆栈,于是 Firefox 说不如把堆栈放在第五个参数吧。但 Chrome 说那还不如把整个 Error 对象放在第五个参数,大家想读取什么属性都可以了,包括自定义属性。结果由于 Chrome 动作比较快,在 Chrome 30 实现了新的 window.onerror 签名,导致标准草案也就跟着这样写了。

window.onerror = function(errorMessage, scriptURI, lineNumber, columnNumber, error){
    if(error){
        reportError(error);
    }else{
        reportError({
            message: errorMessage,
            script: scriptURI,
            line: lineNumber,
            column: columnNumber
        });
   }
}

 

 

 

分享到:
评论

相关推荐

    javaScript异常处理文档

    javaScript异常处理文档,当遇到JavaScript等异常问题时可翻阅本文档寻找答案

    javascript 异常处理使用总结

    JavaScript中的异常可以用try..catch..finally语句来处理,也可以手动的来抛出异常。 1.使用try..catch..finally语句来处理异常 js代码在执行过程中如果出现异常,会手动创建一个异常类对象,该异常类对象将被提交给...

    javascript异常处理实现原理详解

    这篇文章主要介绍了javascript异常处理实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、什么是例外处理 当 JavaScript程序在运行中发生了诸如...

    JavaScript 异常处理 详解

    主要介绍了JavaScript 异常处理 详解,需要的朋友可以参考下

    javascript编程异常处理实例小结

    本文实例总结了javascript编程异常处理的方法。分享给大家供大家参考,具体如下: 前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了asp.net服务端的异常处理。这一篇接着前文,简单总结并...

    浅谈JavaScript异常处理语句

    运行时的错误统称为异常,为了能在错误发生时得到一个处理的机会,JavaScript提供了异常处理语句。包含try-catch、try-catch-finally和throw. try-catch语句 try{ tryStatements } catch(exception){ ...

    JavaScript宝典(第7版)

    ● 应用最新的JavaScript异常处理和自定义对象技术 ● 利用DOM的强大功能 ● 使用Ajax、E4X/XML和JSON推动Web 2.0应用 ● 执行数据输入验证和提高安全性 配书光盘 配书光盘的精彩内容如下: ● 29个附赠章节,这些...

    JavaScript宝典(第7版)( (美)Danny Goodman) 高清中文扫描版.pdf

    《javascript宝典(第7版)》内容简介:您想创建更具魅力的交互网页吗?...应用最新的javascript异常处理和自定义对象技术 利用dom的强大功能 使用ajax、e4x/xml利json推动web2.0应用 执行数据输入验证和提高安全性

    JavaScript 处理异常的方法

    JavaScript 处理异常的方法

    JavaScript错误与异常处理

    JavaScript中的错误可以分为语法错误和运行错误。语法错误一般简称为错误(Error),而运行错误一般也叫做异常(Exception)。错误和异常同属于错误,但是也有着本质的区别。下面将分别予以介绍,并分析它们之间的异同...

    前端开发、JavaScript、asyncawait、异步编程、异常处理,学习JavaScript异步编程

    同时,异步编程中的异常处理也得到了很好的支持,我们可以在async函数中使用try-catch语句来处理异常情况,增强了代码的健壮性和可维护性。 适用人群:本文适用于Web前端开发人员、JavaScript初学者以及对异步编程...

    reactnative异常处理库

    react-native模块,让您注册一个全局错误处理程序,可以捕获致命/非致命的未捕获异常

    23_异常处理_JavaScript模块化(1)1

    23_异常处理_JavaScript模块化(1)1

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

Global site tag (gtag.js) - Google Analytics