2

我有一个 nodejs C++ 模块,我想了解如何报告初始化错误。所以这个的样板是:

extern "C" void Initialize(v8::Handle<v8::Object> instance)
{
    // Do initialization stuff
}

NODE_MODULE(SomeModuleType, Initialize)

Initialize如果它没有返回类型并且我不允许抛出,我该如何报告内部错误extern "C"?我应该调用一些特定的回调吗?

此外,从暴露给 nodejs 的回调方法报告错误的最佳实践是什么?返回空对象是常见的做法,还是我可以扔在那里,这会在 javascript 端显示为异常?

4

1 回答 1

1

在潜伏在 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");
    }
}

如果我只是重新抛出异常,那么在调试器下会继续执行,这不是我想要的。

于 2016-04-03T12:39:05.950 回答