Lua, измененный поток программы, когда требуемый файл отсутствует

Я хочу проверить, есть ли файл require или нет.

В настоящее время, когда я выполняю эту команду в Lua:

require "File_That_May_or_May_Not_Be_There.inc"

Все хорошо, если он есть. Если нет, мой сценарий мертв на месте.

Есть ли способ для меня оправиться от этого?

Я посмотрел ЗДЕСЬ на сайте Lua.Org и ЗДЕСЬ на StackOverflow и не видел ответа на этот вопрос.

Есть ли способ сделать что-то подобное?...

if (this_exists("That_File")) then
    require "That_File"
else
    print "Your file does not exist"
end

Я пытаюсь дать пользователю немного лучшее представление о том, что пошло не так и почему.


person User.1    schedule 22.05.2014    source источник


Ответы (2)


Используйте pcall.

local ok, mod = pcall(require, "That_File")
person Etan Reisner    schedule 22.05.2014
comment
Работает. Идеальный. Спасибо. Я должен подождать 10 минут, чтобы поставить галочку на ваш ответ. - person User.1; 22.05.2014

Если вам не нужно использовать require, который ищет модули в нескольких местах, вы можете использовать

local f,e=loadfile(filename)
if f==nil then
  print(e)
else
  f()
end
person lhf    schedule 22.05.2014
comment
Действительно, я бы предположил, что require загружает необходимый модуль, так что мне это нравится немного больше. При этом ОП специально упомянул require, поэтому я проголосовал за оба ответа. - person Bartek Banachewicz; 22.05.2014