我正在使用 Node.js 中的 C/C++ 编写附加组件。出于某种原因,我需要在 C/C++ Add-on 端抛出异常,并在 JavaScript 端捕获异常。
JavaScript 方面:
try {
var conn = addon.get();
} catch(e) {
console.log("catching....................");
}
C/C++ 代码:
if (args.Length() <= 1 && !args[1]->IsFunction()) {
ThrowException(Exception::TypeError(String::New("Arguments 1 expect a function!")));
}
实际行为是: 对于 WIN:弹出对话框并显示:
Microsoft Visual C++ 运行时库
断言失败!
程序:...verMananger\src\wrapper\build\Release\nodedb2.node 文件:c:\users\ibm_admin.node-gyp\0.10.1...\node_ob..._wrap.h 行:60
表达式:!handle.IsEmpty()
有关您的程序如何导致断言失败的信息,请参阅有关断言的 Visual C++ 文档
(按重试调试应用程序 - 必须启用 JIT)
中止 重试 忽略
对于 Linux:
节点:/root/.node-gyp/0.10.9/src/node_object_wrap.h:60: 静态 T* 节点::ObjectWrap::Unwrap(v8::Handle) [with T = NodeDB2Connection]: 断言`!句柄。 IsEmpty()' 失败。
如何抛出异常并在 Node.js 中捕获它?每个人都遇到了和我一样的问题吗?