c++ - 从 nodejs 模块初始化函数报告失败

标签 c++ node.js node.js-addon

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

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

NODE_MODULE(SomeModuleType, Initialize)

如果 Initialize 没有返回类型并且我不允许抛出,因为它是 extern "C",我如何在 Initialize 中报告错误?有没有我应该调用的特定回调?

此外,从暴露给 nodejs 的回调方法中报告错误的最佳做法是什么?返回 null 对象是常见的做法还是我可以将其抛出并在 javascript 端显示为异常?

最佳答案

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

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

关于c++ - 从 nodejs 模块初始化函数报告失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384267/

相关文章:

Node.js 将自定义对象序列化/反序列化到 mongodb

sql - typeorm 查询生成器 : select relation of relation only

Node.js C++ 插件 : how to create JS Date object by N-API and V8 in Node. js 10

c++ - Node.js 6 插件将 Buffer.from() 转换为 const UInt8*

c# - 如何使用 C++ 静态库编译 C# 应用程序?

C++ 使用 std::pair 模板特化定义树节点数据结构

node.js - 有没有办法清理 node_modules 目录,只留下所需的依赖文件?

c++ - 动态分配不同的数据类型给 v8::local<v8::value>argv[1]

c++ - pprof 告诉我 getaliasbyname_r() 占用了 56% 的 cpu 时间?

c++ - C++中派生类的对象可以被父类访问吗?