错误处理

1.Error类的用法

 1.1用法

throw new TypeError(name + ' must be array of strings or false')   //类型错误

 1.2.抛出Error详情错误信息

//debugs的源码。
function coerce(val) {
  if (val instanceof Error) return val.stack || val.message;
  return val;
} 

2.try/catch

function A(a,b){
    try {
        var parse;
        var b = parse(a);
    }catch(err){
        console.log("err=",err);
        throw "router";
    }
}
try{
    A('6','o');
}catch(err){
    //router
    console.log("err2=",err); //err2=router
}

代码就立即抛出异常。后面代码不能执行! 这个在异步调用中用的非常多。

3.Error.captureStackTrace

以往如果需要获知调用堆栈信息的做法是抛出一个Error对象并立即加以捕捉,通过访问该对象的stack属性来获得调用堆栈,一个简单的例子如下:

try {
  throw new Error();
} catch (e) {
  // e.stack 中包含了堆栈数据,可以进行处理从而忽略不感兴趣的堆栈信息
}

Error.captureStackTrace()可以返回调用堆栈信息,而且会更简洁、易用,也更优雅。自定义Error类的内部经常会使用该函数

function MyError() {
  Error.captureStackTrace(this, MyError);
}

// 如果没有向captureStackTrace传递MyError参数,则在访问.stack属性时,MyError及其内部信息将会出现在堆栈信息中。当传递MyError参数时,这些信息会被忽略。
new MyError().stack
原文地址:https://www.cnblogs.com/liuyinlei/p/6915591.html