Лучшая практика для возврата ошибки из функции lua, возвращающей несколько значений

У меня есть функция lua, которая принимает несколько параметров и возвращает столько значений, сколько есть параметров. Каждое возвращаемое значение соответствует параметру. Для иллюстрации рассмотрим функцию, которая считывает значение для пары ключ / значение из базы данных:

val1, val2, val3 = my_function("key1", "key2", "key3");
val1 = my_function("key1");

Как лучше всего вернуть ошибку из my_function ? (например, если предоставлен " key "недействителен)

Я понимаю, что один из способов - вернуть два значения при ошибке, nil и строку ошибки. Это лучший подход? Например:

val1, val2, val3 = my_function("key1", "key2", "key3");
if val1 then
    -- Use val1, val2, and val3.
else
    print("ERROR: " .. val2);
end

Редактировать

Некоторые дополнительные моменты:

  1. Сценарий lua выполняется из программы на C с использованием lua_pcall () .
  2. Программа C не должна прерываться, если сценарий завершился неудачно.
  3. my_function () реализована в C.
  4. Когда my_function () дает сбой, он также должен вернуть код ошибки (или сообщение) с указанием причины сбоя.
7
задан Ben 8 January 2012 в 23:10
поделиться