【发布时间】:2014-07-29 16:58:28
【问题描述】:
说我疯了,但我希望所有 JavaScript 错误在它们被抛出时都暴露 this 的上下文。很难用英文解释,更容易用代码解释我想要的:
var Person = function() {
this.name = 'Chuck';
}
Person.prototype.speak = function() {
throw new Error('muted!');
console.log('My name is', this.name);
}
var person = new Person();
try {
person.speak();
}
catch(error) {
console.log(error.context.name, 'could not speak.');
}
我是否可以自动填充error.context 属性以使上面的代码有效?我愿意接受任何疯狂的技巧并使用下一版本的 JavaScript 或 node.js。
编辑:我想在不使用自定义错误的情况下执行此操作。这样我就可以捕获任何非自定义错误,并且仍然可以访问context。
【问题讨论】:
-
您可以创建自己的自定义错误构造函数,该构造函数接受用于填充
context属性的参数。然后在你的代码中,就像throw new CustomError(this, 'muted!');
标签: javascript node.js error-handling