Lor*_*rem 2 javascript c c++ try-catch duktape
我今天刚开始在我的C++框架中使用Duktape,我已经阅读了整个api而无法理解我如何捕获错误.我找到了一些关于放在堆栈上的错误对象的线索但是,每次出现错误时(例如无效的javascript语法),一切都变得疯狂,我得到了一个SEGFAULT.
我目前正在使用duk_eval函数评估一些js行
这是我的代码行:
duk_push_string(ctx,"pouet");
duk_eval(ctx);
Run Code Online (Sandbox Code Playgroud)
ctx 是您在创建duktape堆时提供的基本上下文
使用try-catch不会捕获任何东西
任何的想法?
提前致谢
你可以"捕获"的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 */
Run Code Online (Sandbox Code Playgroud)
不要将JavaScript代码触发的异常与C++异常混淆:Duktape是用C实现的,不知道C++标准库提供的功能.使用非保护duk_eval功能变体时,应用程序默认终止.您可以通过分配一个自己的致命处理程序来更改它,在您的情况下,如果需要,可以抛出C++异常.
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |