美文网首页
(3) 错误和调试

(3) 错误和调试

作者: 汨逸 | 来源:发表于2019-03-25 01:04 被阅读0次

3. 错误和调试

1. 错误处理

任何成熟的编程都必须处理错误信息

try {
    // 可能导致错误的代码
} catch (e) {
    // 在错误发生时执行
} finally {
    // 最后执行
}

注意

1. finally可选
2. 无论**try/catch**执行哪块,此处finally都将执行,即使有return语句
3. 合理使用try-catch:**适合处理我们无法控制的错误**(引用第三方规范的库)

2. 错误类型

  1. Error

    1. 基本类型,其他错误类型都继承该类型
    2. Error错误很少见,如果有,一般都是浏览器抛出
  2. EvalError:使用eval()函数而发生异常时被抛出(少见,不推荐使用eval)

  3. RangeError:在数值超出相应范围时触发

    var arr = new Array(-20);
    var arr = new Array(Number.MAX_VALUE);
    
  4. ReferenceError

    1. 访问不存在的变量
    console.log(title)
    
    1. 找不到对象
    console.log(obj.title);
    
  5. SyntaxError:直接导致JavaScript代码立即停止执行。

  6. TypeError:执行特定于类型的操作时,变量的类型不符合要求

    1. 在变量中保存意外的类型
    2. 访问不存在方法
    var o = new 10;
    alert('name' in true);
    Function.call('name')
    
  7. URIError:使用encodeURI()/decodeURI()的时候,格式不正确,导致该错误,但概率很低

3. 抛出错误

关键字 throw 抛出错误,遇到throw操作符,代码会立即停止执行(除非遇到try-catch捕获,代码才可以执行)

  1. 抛出错误
throw 123456;
throw 'hello world';
throw true;
throw { name: 'hello world' };
  1. 抛出上面错误类型中的某种
throw new Error('something is wrong');
throw new TypeError('something is wrong');
throw new RangeError('something is wrong');
throw new ReferenceError('something is wrong');
...
  1. 自定义错误
function CustomError(message) {
    this.name = 'custom error';
    this.message = message;
}
CustomError.prototype = new Error();
throw new CustomError('something is wrong');

4. 错误事件

任何没有通过try-catch处理的错误都会触发window对象的error事件(DOM0标准)

5. 常见的错误类型

  1. 类型转换错误

    // 用 ===
    5 == '5' // true
    5 === '5'    // false
    
    // str3隐性转为布尔值,如果str3位'', 0, false等值,则结果不可预料
    function concat (str1, str2, str3) {
        var result = str1 + str2;
        
        if (str3) {
            result += str3;
        }
        return result;
    }
    
  2. 数据类型错误

    // 任何非字符串值都会导致错误
    function getQueryString (url) {
        var pos = url.indexOf('?');
        if (pos > -1) {
            return url.substring(pos + 1);
        }
        
        return  '';
    }
    
    // 更恰当
    function getQueryString (url) {
     // 增加对参数类型判断,增加容错能力
     if (typeof url === 'string') {
         var pos = url.indexOf('?');
         if (pos > -1) {
             return url.substring(pos + 1);
         }
        }
    
        return  '';
    }
    
    function reverseSort (values) {
        if (values) {    // 不要这样!!!
            values.sort();
            values.reverse();
        }
    }
    
    function reverseSort (values) {
        if (values != null) {    // 不要这样!!!
            values.sort();
            values.reverse();
        }
    }
    
    function reverseSort (values) {
        if (typeof value.sort == 'function') {   // 不要这样!!!
            values.sort();
            values.reverse();
        }
    }
    
    function reverseSort (values) {
        if (values instanceof Array) {   // 最合适
            values.sort();
            values.reverse();
        }
    }
    
  3. 通信错误:主要是Ajax错误和URL/发送数据有关(后期补充。。。)

6. 调试代码

  1. 在控制栏直接打印信息

    console.log(title);  // 打印普通变量
    
    console.dir(obj);    // 打印对象结构
    
    console.table(list); // 打印list类数组对象
    
    console.assert();    // 判断第一个参数是否为真,false的话抛出异常并且在控制台输出相应的信息
    
    console.clear(); // 清空控制台
    
    console.error(); // 打印错误信息
    console.warn();  // 打印警告信息
    
    
    // 你可以启动一个计时器(timer)来跟踪某一个操作的占用时长。每一个计时器必须拥有唯一的名字,页面中最多能同时运行10,000个计时器。当以此计时器名字为参数调用 console.timeEnd() 时,浏览器将以毫秒为单位,输出对应计时器所经过的时间.
    console.time(timeName);
    // 需要停止的计时器名字。一旦停止,计时器所经过的时间会被自动输出到控制台。
    console.timeEnd(timeName);   
    
  2. debugger

    debugger 语句调用任何可用的调试功能,例如设置断点。 如果没有调试功能可用,则此语句不起作用

    debugger;
    

相关文章

  • (3) 错误和调试

    3. 错误和调试 1. 错误处理 任何成熟的编程都必须处理错误信息 注意: 2. 错误类型 Error基本类型,其...

  • 错误和调试

  • 27.javascript 错误处理与调试

    学习要点: 1.浏览器错误报告2.错误处理3.错误事件4.错误处理策略5.调试技术6.调试工具 JavaScrip...

  • 错误、调试和测试

    错误处理 在程序运行的过程中,如果发生错误,可以事先约定返回一个错误代码,这样就可以知道是否有错,以及出错的原因。...

  • 错误、调试和测试

    高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...

  • 错误、调试和测试

    错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原...

  • 软件测试理论

    测试和调试的区别 测试:发现程序的错误 调试:定位和纠正错误(保证软件的正常运行) 软件的危机 软件开发的费用超支...

  • 自动布局指南-Part 3:调试自动布局

    翻译自“Auto Layout Guide”。 3 调试自动布局 3.1 错误类型 自动布局中的错误主要分为三个类...

  • js调试

    什么是bug? 程序错误,程序漏洞 调试(debug)步骤 1.发现错误2.定位错误3.找出原因4.提出办法5.纠...

  • python错误、调试和测试

    错误处理 try与其他语言一样,python也有错误捕获的功能 Python的错误其实也是class,所有的错误类...

网友评论

      本文标题:(3) 错误和调试

      本文链接:https://www.haomeiwen.com/subject/kydmvqtx.html