Top.Mail.Ru
box.error() | Tarantool
Tarantool
Узнайте содержание релиза 2.8

box.error()

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'
...