正如所看到的, 昔时夜函数 c 中输出时, 客栈中包含了函数 a, b 以及c.
最后, Error 对象也可以用于 rejected promise, 这使得很轻易处理 rejected promise:
- new Promise(function(resolve, reject) {
- reject(new Error('The promise was rejected.'));
- }).then(function() {
- console.log('I am an error.');
- }).catch(function(err) {
- if (err instanceof Error) {
- console.log('The promise was rejected with an error.');
- console.log('Error Message: ' + err.message);
- }
- });
处理客栈
这一节是针对支撑 Error.captureStackTrace的运行情况, 例如Nodejs.
Error.captureStackTrace 的第一个参数是 object, 第二个可选参数是一个 function.Error.captureStackTrace 会捕获客栈信息, 并在第一个参数中创建 stack 属性来存储捕获到的客栈信息. 如不雅供给了第二个参数, 该函数将作为客栈调用的终点. 是以, 捕获到的客栈信息将只显示该函数调用之前的信息.
用下面的两个demo来解释一下. 第一个, 仅将捕获到的客栈信息存于一个通俗的对象之中: