Загрузите файл Lua и поймайте любые синтаксические ошибки - PullRequest
0 голосов
/ 16 ноября 2018

Есть ли в Lua функция, которая будет пытаться загрузить другой файл Lua и перехватить любые синтаксические ошибки? Я не могу найти ничего, что не только ловит исключения. Есть ли решение включить парсер Lua в мой проект?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

loadfile, как и load / loadstring, возвращает nil плюс сообщение об ошибке при синтаксических ошибках:

Источник : если естьнет синтаксических ошибок, возвращает скомпилированный кусок как функцию;в противном случае возвращает nil плюс сообщение об ошибке.

local success, syntaxError = loadfile("myfile.lua")
if not success then
    print("There was a syntax error:", syntaxError)
else
    print("No syntax error")
end

A pcall не требуется, поскольку loadstring не выдает ошибки.

0 голосов
/ 16 ноября 2018

Я тупой, ответ очевиден:

pcall(function()
    loadfile("path/to/file")
end)

Редактировать: Как отметил Егор Скриптунов в комментариях, более эффективное решение:

pcall(loadfile, "path/to/file")

Это работает, потому что все аргументы после первого аргумента pcall передаются в качестве аргументов первому аргументу, передаваемому pcall - в данном случае loadfile.

...