tryDoing method

Implementation

bool tryDoing(TDataOperation p, TDataSetErrorEvent? ev) {
  var retry = TDataAction.daRetry;
  while (retry == TDataAction.daRetry) {
    try {
      updateCursorPos();
      p();
      return true;
    } on EDatabaseError catch (e) {
      retry = TDataAction.daFail;
      if (ev != null) {
        final ref = TDataActionRef(retry);
        ev(this, e, ref);
        retry = ref.value;
      }
      switch (retry) {
        case TDataAction.daFail:
          rethrow;
        case TDataAction.daAbort:
          throw EAbort();
        case TDataAction.daRetry:
          break;
      }
    }
  }
  return true;
}