box.error()
box.error
выдает объект, который относится к типу cdata и содержит следующие поля:
- «type» (строка) класс ошибки C++,
- «code» (число) номер ошибки,
- «message» (строка) сообщение ошибки,
- «file» (строка) исходный файл Tarantool’а,
- «line» (число) номер строки в исходном файле Tarantool’а,
- «errno» (число) стандартный номер ошибки в C; это поле добавляется только в случае системной ошибки (например, по причине ошибки сокета или файлового ввода-вывода).
-
box.
error
{reason = string[, code = number]} При вызове с аргументом из Lua-таблицы значения параметров code и reason будут любыми по желанию пользователя. Результатом будут эти значения.
Параметры: - reason (string) – (строка) описание ошибки, задается пользователем
- code (integer) – (целое число) числовой код ошибки, задается пользователем
-
box.
error
() При вызове без аргументов
box.error()
повторно вызывает последнюю ошибку.
-
box.
error
(code, errtext[, errtext ...]) Моделирование ошибки запроса с текстом на основе одной из ошибок Tarantool’а, заданных в файле errcode.h в исходном дереве. Lua-постоянные, которые соответствуют этим ошибкам в Tarantool’е, определяются как элементы
box.error
, напримерbox.error.NO_SUCH_USER == 45
.Параметры: - code (number) – номер предварительно заданной ошибки
- errtext(s) (string) – часть сообщения, которое сопровождает ошибку
Пример:
сообщение
NO_SUCH_USER
= «User '%s' is not found
» (пользователь не найден) – оно включает в себя компонент «%s
», который будет заменен значением параметра errtext. Таким образом, вызовbox.error(box.error.NO_SUCH_USER, 'joe')
илиbox.error(45, 'joe')
приведет к ошибке с сообщением «User 'joe' is not found
» (пользователь „joe“ не найден).Исключение: то, что указано в номере errcode. Пример:
tarantool> box.error{code = 555, reason = 'Arbitrary message'} --- - error: Arbitrary message ... tarantool> box.error() --- - error: Arbitrary message ... tarantool> box.error(box.error.FUNCTION_ACCESS_DENIED, 'A', 'B', 'C') --- - error: A access denied for user 'B' to function 'C' ...