Изучение

Владение и границы

Один ErrorManager в корне композиции без Service Locator и зависимости в каждом функциональном объекте.

v0.1.0-dev.1Начальный уровень

Владение и границы

Корень композиции приложения создаёт один ErrorManager, настраивает роли его политики и подключает принадлежащие приложению границы среды выполнения. У менеджера нет статического текущего экземпляра; его не надо разрешать как зависимость внутри функции.

text
Корень композиции приложения
  ├── корневая Zone
  ├── привязки дочерних Isolate
  ├── необязательная Flutter-привязка
  └── ErrorManager
        ├── ErrorClassifier и ErrorContextProvider
        ├── ErrorPolicy и ErrorSanitizer
        └── ErrorReporter, ErrorPresenter и ErrorRecoveryController

UseCase, Presenter, Repository, DataSource и сервисы продолжают использовать обычное распространение ошибок. Ожидаемые неуспешные результаты остаются в их типизированном API. До корневой границы доходит исключительная ситуация, которую не удалось корректно обработать локально.

Три корректных исхода локального перехвата

После catch код должен выбрать один вариант:

  1. восстановиться локально и не создавать глобальный ErrorIncident;
  2. преобразовать или повторно выбросить ошибку;
  3. намеренно передать её один раз через handleError или captureError.

Внедрение менеджера во все объекты скрывает это решение, связывает бизнес-код с инфраструктурой среды выполнения и повышает риск повторной отчётности.

Централизованный — не глобальный

Централизованное владение означает, что цепочкой обработки управляет один объект приложения. Глобальный доступ позволил бы произвольному коду получать этот объект из любой точки. Ark Error Manager реализует первую модель и намеренно исключает вторую.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.