tryAddError method

void tryAddError(
  1. Object error, {
  2. StackTrace? stackTrace,
  3. bool ignoreError = false,
  4. void onError(
    1. Object error,
    2. StackTrace stackTrace
    )?,
})

Implementation

void tryAddError(
  Object error, {
  StackTrace? stackTrace,
  bool ignoreError = false,
  void Function(Object error, StackTrace stackTrace)? onError,
}) {
  final self = this;
  if (self is StreamController<T>) {
    if (!self.isClosed) {
      if (ignoreError) {
        try {
          self.addError(error, stackTrace);
        } catch (e, st) {
          onError?.call(e, st);
        }
      } else {
        self.addError(error, stackTrace);
      }
    }
  } else {
    try {
      addError(error, stackTrace);
    } on StateError {
      // Ignore StateError, which typically means the sink is closed
    } catch (e, st) {
      onError?.call(e, st);
      if (!ignoreError) {
        rethrow;
      }
    }
  }
}