Javascript nodejsc++;模块初始化失败 我正在编写一个NoDEJS C++模块,在我的init函数里面,我做了一个系统调用,可能会失败。失败时,我希望它向解释器抛出一个异常来处理,但却得到一个seg错误。我如何获得正确的行为

Javascript nodejsc++;模块初始化失败 我正在编写一个NoDEJS C++模块,在我的init函数里面,我做了一个系统调用,可能会失败。失败时,我希望它向解释器抛出一个异常来处理,但却得到一个seg错误。我如何获得正确的行为,javascript,c++,node.js,Javascript,C++,Node.js,例如,我有一些类似于: //... void Init(Handle<Object> target) { if (my_setup_io()==FAIL_CODITION){ ThrowException(Exception::Error( String::New("Could not init "))); //SEG fault instead of exception } target->Set(String::NewSymbol("myF

例如,我有一些类似于:

//...
void Init(Handle<Object> target) {
  if (my_setup_io()==FAIL_CODITION){
    ThrowException(Exception::Error(
      String::New("Could not init ")));  //SEG fault instead of exception
  }
  target->Set(String::NewSymbol("myFunction"),
      FunctionTemplate::New(myFunction)->GetFunction());
 }

NODE_MODULE(example, Init)
/。。。
void Init(句柄目标){
如果(我的安装程序io()=失败){
ThroweException(异常::错误(
String::New(“无法初始化”);//SEG错误而不是异常
}
目标->设置(字符串::NewSymbol(“myFunction”),
FunctionTemplate::New(myFunction)->GetFunction();
}
节点_模块(示例,Init)

<>代码>主要问题是代码>抛出异常>代码>触发JS中的异常,但实际上并没有触发C++异常。这意味着您的代码将在异常运行后尝试运行
Set

如果您在计划JS抛出后返回,它应该可以正常工作

void Init(Handle<Object> target) {
  if (my_setup_io()==FAIL_CODITION){
    ThrowException(Exception::Error(String::New("Could not init ")));
    return; // RETURN!
  }
  target->Set(String::NewSymbol("myFunction"),
    FunctionTemplate::New(myFunction)->GetFunction());
}

NODE_MODULE(example, Init)
void Init(句柄目标){
如果(我的安装程序io()=失败){
ThroweException(异常::错误(字符串::新建(“无法初始化”));
return;//return!
}
目标->设置(字符串::NewSymbol(“myFunction”),
FunctionTemplate::New(myFunction)->GetFunction();
}
节点_模块(示例,Init)

是的,他完成了任务。谢谢你,也谢谢你的解释!