在我们的应用程序中,我正在如下构造一个异常对象:
auto exception = v8::Object::New(isolate_);
exception->Set(code_name, code_value);
使用以下调用引发此异常:isolate_->ThrowException(exception);
在控制台和日志中,当我们打印异常时,我们看到一个对象而不是异常消息。下面是看到的输出:
[object Object]
我们如何将异常消息视为字符串而不是对象?
答案 0 :(得分:0)
使用Java脚本,您可以使用JSON.stringify(exception)
将异常打印到控制台。因此,您的Javascript代码如下所示:
try {
...
} catch(err) {
console.log(JSON.stringify(err));
}
然后您应该在控制台中将整个对象视为一个字符串,如下所示:
{ "message": "An error occurred.", "code": 123 }
有了这些信息,您可以轻松地在异常对象内找到消息(和其他信息)。
从C ++ ,您还可以调用JSON.stringify()
:
Handle<Object> json = Context::GetCurrent()->Global()->Get(String::New("JSON"))->ToObject();
Handle<Function> stringify = Handle<Function>::Cast(json->Get(String::New("stringify")));
然后您可以使用异常对象作为参数来调用该函数,如下所示:
stringify->Call(json, 1, exception);