gpt4 book ai didi

c++ - 如何抛出异常并在 Node.js 中捕获它?

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:10 25 4
gpt4 key购买 nike

我正在 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!")));
}

实际行为是:对于胜利:对话框弹出并显示:


Microsoft Visual C++ 运行库

Assertion failed!

Program: ...verMananger\src\wrapper\build\Release\nodedb2.node File: c:\users\ibm_admin.node-gyp\0.10.1...\node_ob..._wrap.h Line: 60

表达式:!handle.IsEmpty()

有关您的程序如何导致断言的信息失败,请参阅有关断言的 Visual C++ 文档

(按重试调试应用程序 - 必须启用 JIT)

中止重试忽略

对于 Linux:

node: /root/.node-gyp/0.10.9/src/node_object_wrap.h:60: static T* node::ObjectWrap::Unwrap(v8::Handle) [with T = NodeDB2Connection]: Assertion `!handle.IsEmpty()' failed.

如何在Node.js中抛出并捕获异常?大家有没有遇到和我一样的问题?

最佳答案

一切看起来都很好,除了你没有返回任何东西。向 Node 抛出异常与常规 C++ 异常不同。您需要做的就是在调用后添加以下行,这样就可以了:

return scope.Close(Undefined());

所以一切看起来像这样:

if (args.Length() <= 1 && !args[1]->IsFunction()) {
ThrowException(Exception::TypeError(String::New("Arguments 1 expect a function!")));
return scope.Close(Undefined());
}

关于c++ - 如何抛出异常并在 Node.js 中捕获它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com