box.error.new()
-
box.error.
new
(code, errtext[, errtext ...]) Создает объект ошибки, но не выдает ее, как это делает box.error(). Это полезно, когда информацию об ошибке нужно сохранить, чтобы вернуться к ней позже. Чтобы явно записать ошибку как последнюю, используйте box.error.set().
Параметры: - code (number) – номер предварительно заданной ошибки
- errtext(s) (string) – часть сообщения, которое сопровождает ошибку
Пример:
tarantool> e=box.error.new{code=5,reason='A',type='B'} --- ... tarantool> e:unpack() --- - code: 5 base_type: CustomError type: B custom_type: B message: A trace: - file: '[string "e=box.error.new{code=5,reason=''A'',type=''B''}"]' line: 1 ... tarantool> box.error.last() --- - null
Начиная с версии 2.4.1, стал доступен параметр session_settings, который влияет на структуру объектов ошибок. Если
error_marshaling_enabled
изменяется наtrue
, то объект ошибки будет иметь типMP_EXT
и подтипMP_ERROR
. Используя бинарный протокол в теле пакета, который сервер может отправить в ответ наbox.error.new()
, можно увидеть: код MP_EXT по спецификации MessagePack (обычно 0xc7), за которым следует код MP_ERROR (0x03), за которым следует код MP_ERROR_STACK (0x81), после которого идут все компоненты MP_ERROR_STACK (MP_ARRAY, который содержит MP_MAP, содержащий ключи MP_ERROR_MESSAGE, MP_ERROR_CODE и т.д.). Эти компоненты описаны и проиллюстрированы в разделе Дополительные типы MessagePack – Тип ERROR. Поле «type» ассоциативного массива для объекта ошибки будет иметь key = MP_ERROR_TYPE, поле «code» будет иметь key = MP_ERROR_CODE, поле «message» будет иметь key = MP_ERROR_MESSAGE.