JavaScript进修笔记第五天_错误处理与

廖雪峰先生的javascript教程进修笔记

1. 毛病处理

JavaScript 供应了像Java一样的毛病处理机制,即try catch finally.
比方:

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也一样。

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。

    原文作者:Kylin_Mountain
    原文地址: https://segmentfault.com/a/1190000007828671
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞