Загрузите файл 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,

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