您应该检查您的生成器功能。很少有上下文可以断言您的异常/错误处理问题......但是,我已经确定了 try/catch 的行为:
*在 Firefox 33.1.1 和 Chrome 39.0.2171.65 m 上测试
这是声明生成器函数(不带 *)的错误方法,它似乎会影响错误处理行为:
function wrongGenerator()
{
for(var i = 0; i <= 0 ; i++)
{
if(i < 3)
yield i;
}
}
try
{
var gen = new wrongGenerator();
gen.next();
gen.next();
gen.next();
gen.next();
throw new Error("Test");
}
catch(e)
{
//This should return an Error Object, but it just don't.
console.log(e);
console.log(e instanceof Error);
}
另一方面,当您以正确的方式声明生成器函数时,错误处理就可以很好地工作:
function* rightGenerator() {
for(var i = 0; i <= 1; i++)
{
if(i < 3)
var a = yield i;
}
}
try
{
var gen = new rightGenerator();
gen.next();
gen.next();
gen.next();
gen.next();
throw new Error("Test");
}
catch(e)
{
//Returns an Error Object, as expected.
console.log(e);
console.log(e instanceof Error);
}
不确定这是否是 Node 环境中的问题,但我认为它可以部分回答您的担忧。