【发布时间】:2015-11-29 21:32:04
【问题描述】:
假设我有一个 JS 函数,它只是抛出一个错误:
function() { throw "Danger, Will Robinson!"; }
这个函数作为参数传递给 node.js 插件并用于构造 Nan::Callback(它应该负责使这个句柄持久化):
// get handle to JS function and its Tcl name
Handle<Function> fun = Handle<Function>::Cast( info[0] );
Nan::Callback *pf = new Nan::Callback(fun);
当使用 C++ 中的 Call() 调用 Nan::Callback 时,我遇到了问题拦截 C++ 中的这个 JS 异常:
Nan::TryCatch tc;
Local<Value> retv = pf->Call( Nan::GetCurrentContext()->Global(), objc-1, &args );
if ( tc.HasCaught() ) {
printf("EXCEPTION:\n");
...
事实上,脚本只是在 JS 错误时退出,我再也没有回来检查 tc 和调用返回值 (retv) 是否有任何未决异常。我做错了什么?
【问题讨论】:
标签: c++ node.js v8 node.js-addon