Programuję aplikację JavaScript, która uzyskuje dostęp do kodu C++ za pomocą V8 w Google.Rzucanie wyjątku JavaScriptu z kodu C++ przy użyciu Google V8
Wszystko działa dobrze, ale nie mogłem wymyślić, w jaki sposób mogę rzucić wyjątek JavaScript, który może być przechwycony w kodzie JavaScript z metody C++.
Na przykład, jeśli mam funkcji w C++ jak
...
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);
...
narażone na JavaScripcie, I'ld lubią używać go w kodzie JavaScript jak
try {
hello("throw me some exception!");
} catch (e) {
// catched it!
}
Co to jest poprawny sposób rzucić wyjątek V8 z kodu C++?
Dziękujemy! Czytałem API V8 przez ostatnie 3 tygodnie i jakoś udało mi się tego nie zauważyć. – Vortico
Otrzymuję komunikat "Błąd segmentacji" po powrocie funkcji C++ z powrotem do JS – exebook