LuaJava的LuaJava设置错误处理程序(a,b,error_function_index)?

我打电话给:

LuaState.pcall(num_args,num_returns,error_handler_index).

我需要知道如何为此函数设置错误处理程序.事实上,我认为有人展示如何调用Lua函数并使用LuaJava获取数值结果会很好.这可能会节省大量时间和问题.我正在寻找但没有找到错误函数的签名,以及如何将它放在LuaState堆栈上的正确位置.所有Java-> Lua示例都要么打印一个没有返回的值,要么是在使用Lua传入的Java对象上设置值.我想看看如何直接调用Lua函数并返回结果.

更新:一种解决方案是使用LuaState.pcall(1,1,0)传递没有错误处理程序,方法是为错误处理程序传递零:

String errorStr;
L.getGlobal("foo");
L.pushNumber(8.0);
int retCode=L.pcall(1,0);
if (retCode!=0){
    errorStr =  L.toString(-1);
}
double finalResult = L.toNumber(-1);

在哪里加载calc.lua:

function foo(n) 
 return n*2 
end

现在有没有办法设置错误处理程序?谢谢

解决方法

如果你还想要堆栈回溯(我确定你这样做:),你可以将debug.traceback作为错误函数传递.看看 how it’s implemented in AndroLua.

基本上,您必须确保您的堆栈设置如下:

>错误处理程序(debug.traceback)
>你想打电话的功能
>参数

您可以使用您的示例执行此操作:

L.getGlobal("debug");
L.getField(-1,"traceback");      // the handler
L.getGlobal("foo");               // the function
L.pushNumber(42);                 // the parameters
if (L.pcall(1,-3) != 0) { ... // ... you kNow the drill...

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...