error<E extends Object> method

ValueCell<E?> error<E extends Object>({
  1. bool all = false,
})

Create a cell which captures exceptions thrown during the computation of this cell.

If this cell throws an exception during the computation of its value, the returned cell evaluates to the thrown exception.

If this cell does not throw during the computation of its value, the value of the returned cell is null if all is true. If all is false, its value is not updated.

If E is given, only exceptions of type E are captured, otherwise all exceptions are captured.

A keyed cell is returned, which is unique for a given this, all and exception type E.

Implementation

ValueCell<E?> error<E extends Object>({bool all = false}) => ValueCell.computed(() {
  try {
    this();
  }
  on E catch (e) {
    return e;
  }
  catch (e) {
    // To prevent errors being propagated through this cell
  }

  if (!all) {
    ValueCell.none();
  }

  return null;
}, key: _ErrorCellKey<E>(this, all));