zoukankan      html  css  js  c++  java
  • javascript Error对象详解

    今天谈一下在IE浏览器下返回执行错误的Javascript代码所在的问题。其中在IE浏览器下,如果你使用了try-catch,那么当出现异常的时候,IE浏览器会传递一个Error对象。 ~~~怎么通过Error对象获取更多信息(如:错误描述 错误行数) 帮助调试是我们比较关心的

    <script>
        try{
            sldfj
        }catch(e){
            for(var p in e){ // ~~~error对象的属性都是可枚举的?
                document.writeln(p + "=" + e[p]);
            }
        }
    </script>输出:name=TypeError message='sldfj' 未定义 number=-2146823279 description='sldfj' 未定义

    其中的number属性是一个整数,表示的是错误码,但这并不是真正的错误码,我们需要先将其做一下转换

    var errCode = err.number& x0FFFF; 这得到真正的错误码,例如上述的-2146823279 转换之后就得到5009。有了这个错误码之后,我们可以到http://msdn.microsoft.com/en-us/library/1dk3k160(VS.85).aspx微软msdn上查找此错误码对应的。5009对应的错误是Undefined identifier。

    ~~~ error.name错误名称 ;error.description错误描述; error.number非真正的错误码 需要做个位运算 error.number&x0ffff才得到真正的错误码;

    ~~~个人觉得 error.name , error.description , error.message会比较有参考意义


    javascript Error 对象 错误处理

    Error对象
    Property:
    name: 错误名
    number: 错误号
    description: 描述
    message: 错误信息,多同description

    ~~~firefox的error对象和ie的error对象有不同的属性

    FF Only 属性
    fileName: 错误发生的文件
    stack: 错误发生时的调用堆栈

    Constructor:
    Error(){
    this(0,"")}
    Error(description){
    this(0,description)}
    Error(number,description){
    ....}
    构造函数参数不带name,是因为Error对象的name对应于它的来源:
    EvalError: 错误发生在eval()中
    SyntaxError: 语法错误,错误发生在eval()中,因为其它点发生SyntaxError会无法通过解释器
    RangeError: 数值超出范围
    ReferenceError: 引用不可用
    TypeError: 变量类型不是预期的
    URIError: 错误发生在encodeURI()或decodeURI()中

    ~~~开发人员主动抛出异常 throw new Error('error demo'); 或 throw ('error demo');

    抛出Error:
    throw new Error(0,"Error Demo");
    new Error可省略:
    throw("Error Demo");

    ~~~异常的捕获 try{}catch(e){}finally{}
    捕获Error:
    try catch finally语句:
    try{
    ..可能错误的语句..}
    catch(e){
    ..错误发生后的处理..}
    finally{
    ..完成后执行的语句块..}


    finally不是必须的
    如果嵌套,两个catch不要使用同一个参数名,以免覆盖
    传入的参数是一个Error对象,可以从中得到错误信息
    FF支持一个try多个catch,因为Js为弱类型不推荐使用

    window.onerror错误捕获:
    window.onerror=function(Msg,Url,Num){}
    onerror事件会传给回调函数3个默认参数
    Msg: 错误信息
    Url: 发生错误的文件的Url
    Num: 错误发生位置的行号

    ~~~window.onerror还能处理SyntaxError,比try catch更强大。

    但是onerror属于bom,所以各浏览器厂家对其的支持都不同。 ~~~ onerror属于BOM
    IE发生error时,正常的代码会继续执行;在FF中,代码将结束;Safari只支持Image的onerror事件处理。

    Image.onerror
    onerror还可以应用于其它HTMLElement上,最常见的是<img />元素
    <img src="sample.jpg" onerror="javascript:alert('图像载入错误');" />

    处理Error:
    判断错误类型:
    catch(e){
    if(e.name=="RangeError")
    alert("错误提示");}

    catch(e){
    if(e instanceof TypeError)
    alert("错误提示");}

  • 相关阅读:
    hlgoj 1766 Cubing
    Reverse Linked List
    String to Integer
    Bitwise AND of Numbers Range
    Best Time to Buy and Sell Stock III
    First Missing Positive
    Permutation Sequence
    Next Permutation
    Gray Code
    Number of Islands
  • 原文地址:https://www.cnblogs.com/stephenykk/p/3147704.html
Copyright © 2011-2022 走看看