JavaScript — Duktape — ловить ошибки в C

Я только что начал использовать Duktape в своей среде C ++ сегодня, и я прочитал весь API, не понимая, как я могу ловить ошибки. Я нашел некоторые подсказки об объекте ошибки, который помещается в стек. Однако каждый раз, когда возникает ошибка (например, неверный синтаксис javascript), все сходит с ума, и я получаю SEGFAULT.

В настоящее время я оцениваю некоторые строки js с помощью функции duk_eval

Вот мои строки кода:

duk_push_string(ctx,"pouet");
duk_eval(ctx);

ctx является базовым контекстом, который вы предоставляете при создании кучи duktape

Использование try-catch ничего не ловит

Любая идея?

заранее спасибо

2

Решение

Вы можете «ловить» ошибки во время выполнения кода JavaScript, используя защищенный вариант duk_eval который duk_peval:

duk_push_string(ctx, "syntax error=");
if (duk_peval(ctx) != 0) {
printf("eval failed: %s\n", duk_safe_to_string(ctx, -1));
} else {
printf("result is: %s\n", duk_safe_to_string(ctx, -1));
}
duk_pop(ctx);  /* pop result */

Не путайте исключения, вызванные кодом JavaScript, с исключениями C ++: Duktape реализован на C и не знает о функциях, предоставляемых стандартной библиотекой C ++. При использовании незащищенных duk_eval вариант функции приложение прекращено по умолчанию. Вы можете изменить это назначение собственного фатального обработчика, который в вашем случае может вызвать исключение C ++ при желании.

5

Другие решения


По вопросам рекламы [email protected]