插件通过Napi::Error
提供错误处理的能力。
如果插件开启了错误捕获(见前文《实现c++插件的三种方式》:安装和配置 node-addon-api部分):
throw Napi::Error::New(env, "Example exception");
如果未开启:
Napi::Error::New(env, "Example exception").ThrowAsJavaScriptException();
// 这里需要return立即返回
return;
在c++中可以使用try...catch
来捕获js callback的错误:
Napi::Function jsFunctionThatThrows = someValue.As<Napi::Function>();
Napi::Value result;
try {
result = jsFunctionThatThrows({ arg1, arg2 });
} catch (const Error& e) {
cerr << "Caught JavaScript exception: " + e.what();
}