LogDB.Error exception (logdb_client v0.3.0)

Copy Markdown View Source

Ошибка клиента — одна форма для всех транспортов: {:error, %LogDB.Error{}}.

code — что случилось, атомом:

  • отказ шины (как в её API 1, {code, message, details}): :unauthorized, :forbidden, :not_found, :invalid, :conflict, :too_large, :unavailable, :timeout, :internal;
  • на стороне клиента: :disconnected (нет соединения с шиной), :timeout (шина не ответила вовремя), :not_supported (транспорт этого не умеет);
  • :unknown — шина ответила отказом прежней формы, которую не разобрать; он сам — в details.reason.

details — подробности: status и body HTTP-ответа, reason — исходная причина, index — номер события в батче.

Это исключение: raise error даёт осмысленное сообщение.

Summary

Functions

Любая причина отказа — транспорта, шины любой версии — в %LogDB.Error{}.

Ошибка с кодом и текстом.

Types

code()

@type code() ::
  :unauthorized
  | :forbidden
  | :not_found
  | :invalid
  | :conflict
  | :too_large
  | :unavailable
  | :timeout
  | :internal
  | :disconnected
  | :not_supported
  | :unknown

t()

@type t() :: %LogDB.Error{
  __exception__: term(),
  code: code(),
  details: map(),
  message: String.t() | nil
}

Functions

from(error)

@spec from(term()) :: t()

Любая причина отказа — транспорта, шины любой версии — в %LogDB.Error{}.

new(code, message \\ nil, details \\ %{})

Ошибка с кодом и текстом.