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

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 and e: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.

Нашли ответ на свой вопрос?
Обратная связь