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: %sn", duk_safe_to_string(ctx, -1));
} else {
printf("result is: %sn", duk_safe_to_string(ctx, -1));
}
duk_pop(ctx); /* pop result */
不要将JavaScript代码触发的异常与C++异常混淆:Duktape是用C实现的,不知道C++标准库提供的功能。当使用非受保护的duk_eval
函数变体时,应用程序默认终止。您可以通过分配自己的致命处理程序来改变这一点,在您的情况下,如果需要,可以抛出C++异常。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 我可以使用 try catch 语句来捕获任何错误而不是具体错误吗?
- 提取 try-catch 时出现运行时错误
- 为什么 catch 不处理此错误C++
- libpng错误不会被try/catch块捕获
- 当错误存在时,为什么我的程序不执行第二个catch块
- C中的Duktape-catch错误
- 使用Throw和Catch的未处理异常运行时错误
- 在另一个lambda中调用catch块中捕获的lambda会产生GCC错误
- 如何从c++ catch(..)块获取错误消息
- 嵌套的try/catch块用于跨类传播错误
- c++中构造函数抛出的Catch错误
- Try/Catch VS在C++中返回错误代码
- C++ 如果引入 try-catch,则出现分段错误