error_object
-
object
error_object
¶ Since version 2.4.1. Errors can be organized into lists. To achieve this, a Lua table representing an error object has
.prev
field ande:set_prev(err)
method.-
error_object.
prev
¶ Возврат предыдущей ошибки, если она существует.
-
error_object:
set_prev
(error object)¶ Установка ошибки в качестве предыдущей. Принимает объект ошибки или
nil
.
Пример:
tarantool> e1 = box.error.new({code = 111, reason = 'some cause'}) --- ... tarantool> e2 = box.error.new({code = 111, reason = 'cause of cause'}) --- ... tarantool> e1:set_prev(e2) --- ... tarantool> e1.prev --- - cause of cause ...
Циклы для списков ошибок недопустимы:
tarantool> e2:set_prev(e1) --- - error: 'builtin/error.lua:147: Cycles are not allowed' ...
Установка предыдущей ошибки подтягивает за ней ее собственные предыдущие ошибки:
-- e1 -> e2 -> e3 -> e4 e1:set_prev(e2) e2:set_prev(e3) e3:set_prev(e4) e2:set_prev(e5) -- Now there are two lists: e1->e2->e5 and e3->e4
Протокол IProto тоже поддерживает диагностику с помощью стека ошибок. Подробнее в разделе Дополнительные типы MessagePack – Тип ERROR.
-