Рецепты

Передать намеренно перехваченную ошибку

Сохранить прикладную диагностику, когда локальная интеграционная граница обязана обработать исключение и вернуть резервный результат.

v0.1.0-dev.1Средний уровеньark_error_manager

Передать намеренно перехваченную ошибку

Корневая граница не увидит ошибку, которую локальный код перехватил и полностью обработал. Передавайте её явно, только когда интеграционная граница должна вернуть резервный результат, а ErrorIncident всё равно требует прикладного решения.

dart
try {
  await externalClient.synchronize();
} catch (error, stackTrace) {
  await manager.handleError(
    error,
    stackTrace,
    source: ErrorCaptureSource.reported,
    operation: 'externalClient.synchronize',
  );
  return const SynchronizationResult.unavailable();
}

Используйте handleError, если вызывающий код должен дождаться обработки. Если достаточно постановки в очередь, используйте captureError.

Не следует:

  • передавать ошибку менеджеру, а затем повторно выбрасывать её в другую настроенную корневую границу;
  • оборачивать отчётностью каждый метод функции;
  • превращать ожидаемый бизнес-результат в глобальный ErrorIncident.
ARKTELOS

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