box.error() | Tarantool
Документация на русском языке
поддерживается сообществом

box.error()

box.error()

При вызове без аргументов box.error() повторно вызывает последнюю ошибку.

box.error{reason = string[, code = number]}

Выдача ошибки. При вызове с аргументом из Lua-таблицы значения параметров code и reason будут любыми по желанию пользователя. Результатом будут эти значения.

Параметры:
  • reason (string) – (строка) описание ошибки, задается пользователем
  • code (integer) – (целое число) числовой код ошибки, задается пользователем
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.

box.error() может принимать два типа аргументов:

  • код ошибки и ее причину/текст (box.error{code = 555, reason = 'Arbitrary message'}),
  • либо объект ошибки (box.error(err)).

В обоих случаях ошибка будет записана как последняя системная ошибка.

Пример:

tarantool> e1 = box.error.new({code = 111, reason = 'Сause'})
---
...
tarantool> box.error(e1)
---
- error: Сause
...
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'
...
Нашли ответ на свой вопрос?
Обратная связь