如何在Lua中捕获异常?我正在使用LuaJava

时间:2011-06-17 07:50:15

标签: java lua luajava

我正在使用luajava。 当lua执行错误时,我无法捕获异常,然后jdk崩溃了。 那么如何在lua中捕获异常?我只是捕获这样的错误(java代码):

LuaState ls = LuaStateFactory.newLuaState();
ls.openLibs();
String luaPath = "test.lua";
int isCompile = ls.LdoFile(luaPath);
if(isCompile==0){
    log.info(luaPath+" compile success!");
}else{
    log.info(luaPath+" script does not exist or compile failed!");
}

当lua有内部错误时,我无法抓住。 那么如何在lua中捕获异常?

当lua执行错误时,JVM会显示错误,而不是异常。 如何在Java中捕获错误?

2 个答案:

答案 0 :(得分:2)

有点黑客,但我能想到解决这个问题的唯一方法是做这样的事情:

LuaState ls = LuaStateFactory.newLuaState();
ls.openLibs();
String luaPath = "test.lua";
int isCompile;
try {
    isCompile = ls.LdoFile(luaPath);
} catch (Exception ex {
    ex.printStackTrace(System.err);
    isCompile = 1;
}
if(isCompile==0){
    log.info(luaPath+" compile success!");
}else{
    log.info(luaPath+" script does not exist or compile failed!");
}

很抱歉,如果这不是您的要求,但LuaJava文档毫无价值,所以我不知道具体的运行时异常是什么。

答案 1 :(得分:0)

LuaState.LdoFile不会抛出任何异常。您可能尝试的一种方法是生成一个新线程来尝试运行lua脚本。