Рецепты
Передать намеренно перехваченную ошибку
Сохранить прикладную диагностику, когда локальная интеграционная граница обязана обработать исключение и вернуть резервный результат.
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.