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