Как поймать исключение в 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 выполняет ошибку, JVM показывает ошибку, а не исключение. Как я могу поймать ошибку в Java?

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 бесполезен, поэтому я понятия не имею, что является конкретным исключением во время выполнения.

LuaState.LdoFile не выдает никаких исключений. Один из подходов, который вы можете попробовать, - создать новый поток, чтобы попытаться запустить скрипт lua.

Другие вопросы по тегам