JavaScript学习笔记第五天_错误处理与

廖雪峰老师的javascript教程学习笔记javascript

1. 错误处理

JavaScript 提供了像Java同样的错误处理机制,即try catch finally.
例如:java

try{
    var s = null;
    s.length; // TypeError: Cannot read property 'lenght' of null
}catch(err){
    console.log('null pointer' + err);
}finally{
    // clear resource.
}

其中catch不是必须的,finally也不是必须的,但两者必须有其一,其中finally是一定会被执行的。异步

错误类型,TypeError继承于Error,还有ReferenceError等错误处理对象,能够经过捕获到的e,经过instance判断出的具体的Error类型。函数

它还容许抛出异常,关键字throw,像java同样。学习

var n = 'ss';
if(isNaN(n)){
    throw new Error('input error');
}

实际上,JavaScript容许抛出任意对象,包括数字、字符串。可是,最好仍是抛出一个Error对象。线程

2. 错误传播

向上一层传递,就像Java的Exception同样,Java会把整个调用栈都会打出来,JS也一样。code

3. 异步错误处理

JavaScript引擎是一个事件驱动的执行引擎,代码老是以单线程执行,而回调函数的执行须要等到下一个知足条件的事件出现后,才会被执行。对象

function printTime() {
    throw new Error();
}

try {
    setTimeout(printTime, 1000);
    console.log('done');
} catch (e) {
    alert('error');
}

其中window.setTimeout(func, delay, pars...)其中func函数将在超时后执行。因为是异步,因此setTimeout会当即执行完成,并执行下一句打印log,而后等到超时后,被触发执行,而后throw error,而这时并不会被catch。继承

相关文章
相关标签/搜索