Google の V8 経由で C++ コードにアクセスする JavaScript アプリケーションをプログラミングしています。
すべて正常に動作しますが、C++ メソッドから JavaScript コードでキャッチできる JavaScript 例外をスローする方法がわかりませんでした。
たとえば、C++ に次のような関数があるとします。
...
using namespace std;
using namespace v8;
...
static Handle<Value> jsHello(const Arguments& args) {
String::Utf8Value input(args[0]);
if (input == "Hello") {
string result = "world";
return String::New(result.c_str());
} else {
// throw exception
}
}
...
global->Set(String::New("hello"), FunctionTemplate::New(jsHello));
Persistent<Context> context = Context::New(NULL, global);
...
JavaScript に公開されているので、次のような JavaScript コードで使用したいと思います
try {
hello("throw me some exception!");
} catch (e) {
// catched it!
}
C++ コードから V8 例外をスローする正しい方法は何ですか?