gpt4 book ai didi

javascript - Duktape - 在 C 中捕获错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:34:17 25 4
gpt4 key购买 nike

我今天刚开始在我的 C++ 框架中使用 Duktape,我已经阅读了整个 API,但无法理解如何捕获错误。我发现了一些关于放置在堆栈上的错误对象的线索但是,每次出现错误(例如无效的 javascript 语法)时,一切都会变得疯狂,我会得到 SEGFAULT。

我目前正在使用 duk_eval 函数评估一些 js 行

这是我的代码行:

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

ctx 是您在创建 duktape 堆时提供的基础上下文

使用 try-catch 不捕获任何东西

有什么想法吗?

提前致谢

最佳答案

通过使用 duk_eval 的 protected 变体,您可以在执行 JavaScript 代码期间“捕获”错误,即 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++ 标准库提供的特性。当使用未 protected duk_eval 函数变体时,应用程序是 terminated by default .您可以通过 assigning an own fatal handler 更改它,如果需要,在您的情况下可能会抛出 C++ 异常。

关于javascript - Duktape - 在 C 中捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26415047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com