C中的Duktape-catch错误
Duktape - catch errors in C
我今天刚开始在C++框架中使用Duktape,我已经阅读了整个api,但不知道如何捕捉错误。我发现了一些关于放在堆栈上的错误对象的线索。然而,每次出现错误(例如无效的javascript语法),一切都会变得疯狂,我会得到一个SEGFAULT。
我目前正在使用duk_eval函数评估一些js行
这是我的代码行:
duk_push_string(ctx,"pouet");
duk_eval(ctx);
ctx
是创建duktape堆时提供的基本上下文
使用try-catch不会捕获任何
知道吗?
提前感谢
您可以使用受保护的duk_eval
变体duk_peval
:在执行JavaScript代码时"捕获"错误
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++异常。
相关文章:
- JSON.parse,已经在try/catch块中,仍然抛出语法错误
- 错误处理try&catch+回调
- javascript中的Catch X-Frame-Options错误
- 为什么“require”在Duktape中会导致错误
- Promise.catch是吞咽错误
- JavaScript 中的 try-catch:如何获取原始错误的堆栈跟踪或行号
- 由 React 组件抛出的错误,被捕获在不相关的 promise 的 catch 块中
- 使用 window.onerror 和 try-catch 块处理错误之间的差异
- 延长符:catch断言错误
- Bluebird.js:重新抛出catch回调中的错误不会再次被捕获
- 带有catch的promise中的错误处理
- 如何停止javascript中嵌套try/catch错误的传播
- C中的Duktape-catch错误
- try-catch javascript语句中的未识别错误
- WebApi Catch连接超时错误
- try.catch未捕获异步/等待错误
- Javascript try-catch错误输出被截断
- 茉莉在Try/Catch中没有捕获错误
- JavaScript承诺中错误处理参数和catch的区别
- 平展承诺链并执行特定于错误的catch语句