从nodejs模块初始化函数报告失败
我有一个nodejs C ++模块,我想了解如何报告初始化错误。 所以这样的样板是:
extern "C" void Initialize(v8::Handle<v8::Object> instance) { // Do initialization stuff } NODE_MODULE(SomeModuleType, Initialize)
如果没有返回types,我如何报告Initialize
的错误,我不能抛出,因为它是extern "C"
? 有什么特定的回拨,我应该打电话?
另外,从暴露给nodejs的callback方法报告错误的最佳做法是什么? 是否返回null对象的常见做法,或者我可以扔在那里,将显示为JavaScript方面的exception?
在潜伏在nodejs源代码之后,我想到了这一点,但是仍然欢迎评论,关于这是否是一个好方法:
extern "C" void Initialize(v8::Handle<v8::Object> instance) { try { // Do something unsafe } catch (std::exception& Exception) { node::Environment::GetCurrent(v8::Isolate::GetCurrent())->ThrowError("module initialization failed"); } }
如果我只是重新抛出exception,然后在debugging器下执行,这是不是我想要的。