Загрузите файл Lua и поймайте любые синтаксические ошибки
Есть ли в Lua функция, которая будет пытаться загрузить другой файл Lua и перехватить любые синтаксические ошибки? Я не могу найти ничего, что не только ловит исключения. Является ли решение включить парсер Lua в мой проект?
2 ответа
loadfile
, лайк load
/loadstring
, возвращает nil
плюс сообщение об ошибке, когда есть синтаксические ошибки:
Источник: если нет синтаксических ошибок, возвращает скомпилированный кусок как функцию; в противном случае возвращает ноль плюс сообщение об ошибке.
local success, syntaxError = loadfile("myfile.lua")
if not success then
print("There was a syntax error:", syntaxError)
else
print("No syntax error")
end
pcall
не нужно, так как loadstring
не выдает ошибок.
Я тупой, ответ очевиден
pcall(function()
loadfile("path/to/file")
end)
Изменить: Как отметил Egor Skriptunoff в комментариях, более эффективное решение:
pcall(loadfile, "path/to/file")
Это работает, потому что все аргументы после первого аргумента pcall
передаются в качестве аргументов первому аргументу, переданному pcall
-в этом случае, loadfile
,