廖雪峰老师的javascript教程学习笔记javascript
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对象。线程
向上一层传递,就像Java的Exception同样,Java会把整个调用栈都会打出来,JS也一样。code
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。继承