reactor.core.scheduler.Schedulers.handleError()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(6.7k)|赞(0)|评价(0)|浏览(136)

本文整理了Java中reactor.core.scheduler.Schedulers.handleError()方法的一些代码示例,展示了Schedulers.handleError()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Schedulers.handleError()方法的具体详情如下:
包路径:reactor.core.scheduler.Schedulers
类名称:Schedulers
方法名:handleError

Schedulers.handleError介绍

暂无

代码示例

代码示例来源:origin: reactor/reactor-core

@Override
  public void run() {
    try {
      delegate.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
    finally {
      cached.dispose();
    }
  }
}

代码示例来源:origin: reactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
  }
  return null;
}

代码示例来源:origin: reactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
  }
  return null;
}

代码示例来源:origin: reactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
    Future f;
    for (;;) {
      f = future;
      if (f == CANCELLED || FUTURE.compareAndSet(this, f, FINISHED)) {
        break;
      }
    }
  }
  return null;
}

代码示例来源:origin: reactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
      setRest(executor.submit(this));
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
  }
  return null;
}

代码示例来源:origin: reactor/reactor-core

@Override
public void run() {
    if (!get()) {
      try {
        task.run();
      }
      catch (Throwable ex) {
        Schedulers.handleError(ex);
      }
      finally {
        lazySet(true);
      }
    }
}

代码示例来源:origin: reactor/reactor-core

@Override
public Disposable schedule(Runnable task) {
  if(terminated){
    throw Exceptions.failWithRejected();
  }
  Objects.requireNonNull(task, "task");
  ExecutorPlainRunnable r = new ExecutorPlainRunnable(task);
  //RejectedExecutionException are propagated up, but since Executor doesn't from
  //failing tasks we'll also wrap the execute call in a try catch:
  try {
    executor.execute(r);
  }
  catch (Throwable ex) {
    if (executor instanceof ExecutorService && ((ExecutorService) executor).isShutdown()) {
      terminated = true;
    }
    Schedulers.handleError(ex);
    throw Exceptions.failWithRejected(ex);
  }
  return r;
}

代码示例来源:origin: reactor/reactor-core

@Override
public void run() {
    if (!get()) {
      try {
        task.run();
      }
      catch (Throwable ex) {
        Schedulers.handleError(ex);
      }
      finally {
        if (callRemoveOnFinish) {
          dispose();
        }
        else {
          lazySet(true);
        }
      }
    }
}

代码示例来源:origin: reactor/reactor-core

@Override
@Nullable
public Void call() {
  THREAD.lazySet(this, Thread.currentThread());
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    THREAD.lazySet(this, null);
    Composite o = parent;
    //note: the o != null check must happen after the compareAndSet for it to always mark task as DONE
    if (o != DISPOSED && PARENT.compareAndSet(this, o, DONE) && o != null) {
      o.remove(this);
    }
    Future f;
    for (;;) {
      f = future;
      if (f == SYNC_CANCELLED || f == ASYNC_CANCELLED || FUTURE.compareAndSet(this, f, FINISHED)) {
        break;
      }
    }
  }
  return null;
}

代码示例来源:origin: reactor/reactor-core

@Override
public Disposable schedule(Runnable task) {
  Objects.requireNonNull(task, "task");
  ExecutorTrackedRunnable r = new ExecutorTrackedRunnable(task, this, true);
  if (!tasks.add(r)) {
    throw Exceptions.failWithRejected();
  }
  try {
    executor.execute(r);
  }
  catch (Throwable ex) {
    tasks.remove(r);
    Schedulers.handleError(ex);
    throw Exceptions.failWithRejected(ex);
  }
  return r;
}

代码示例来源:origin: reactor/reactor-core

@Override
public Disposable schedule(Runnable task) {
  Objects.requireNonNull(task, "task");
  if (terminated) {
    throw Exceptions.failWithRejected();
  }
  ExecutorTrackedRunnable r = new ExecutorTrackedRunnable(task, this, false);
  synchronized (this) {
    if (terminated) {
      throw Exceptions.failWithRejected();
    }
    queue.offer(r);
  }
  if (WIP.getAndIncrement(this) == 0) {
    try {
      executor.execute(this);
    }
    catch (Throwable ex) {
      r.dispose();
      Schedulers.handleError(ex);
      throw Exceptions.failWithRejected(ex);
    }
  }
  return r;
}

代码示例来源:origin: reactor/reactor-core

@Test
public void testUncaughtHookCalledWhenCommonException() {
  AtomicBoolean handled = new AtomicBoolean(false);
  Schedulers.onHandleError((t, e) -> handled.set(true));
  try {
    Schedulers.handleError(new IllegalArgumentException());
  } finally {
    Schedulers.resetOnHandleError();
  }
  Assert.assertTrue("IllegalArgumentException not handled", handled.get());
}

代码示例来源:origin: reactor/reactor-core

@Test
public void testUncaughtHookCalledWhenOnErrorNotImplemented() {
  AtomicBoolean handled = new AtomicBoolean(false);
  Schedulers.onHandleError((t, e) -> handled.set(true));
  try {
    Schedulers.handleError(Exceptions.errorCallbackNotImplemented(new IllegalArgumentException()));
  } finally {
    Schedulers.resetOnHandleError();
  }
  Assert.assertTrue("errorCallbackNotImplemented not handled", handled.get());
}

代码示例来源:origin: reactor/reactor-core

@Test
public void testUncaughtHooksCalledWhenThreadDeath() {
  AtomicReference<Throwable> onHandleErrorInvoked = new AtomicReference<>();
  AtomicReference<Throwable> globalUncaughtInvoked = new AtomicReference<>();
  Schedulers.onHandleError((t, e) -> onHandleErrorInvoked.set(e));
  Thread.setDefaultUncaughtExceptionHandler((t, e) -> globalUncaughtInvoked.set(e));
  ThreadDeath fatal = new ThreadDeath();
  //written that way so that we can always reset the hook
  Throwable thrown = catchThrowable(() -> Schedulers.handleError(fatal));
  Schedulers.resetOnHandleError();
  assertThat(thrown)
      .as("fatal exceptions not thrown")
      .isNull();
  assertThat(onHandleErrorInvoked).as("onHandleError invoked")
                  .hasValue(fatal);
  assertThat(globalUncaughtInvoked).as("global uncaught handler invoked")
                   .hasValue(fatal);
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
  public void run() {
    try {
      delegate.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
    finally {
      cached.dispose();
    }
  }
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
  }
  return null;
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
@Nullable
public Void call() {
  thread = Thread.currentThread();
  try {
    try {
      task.run();
    }
    catch (Throwable ex) {
      Schedulers.handleError(ex);
    }
  }
  finally {
    thread = null;
  }
  return null;
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
public void run() {
    if (!get()) {
      try {
        task.run();
      }
      catch (Throwable ex) {
        Schedulers.handleError(ex);
      }
      finally {
        lazySet(true);
      }
    }
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
public void run() {
    if (!get()) {
      try {
        task.run();
      }
      catch (Throwable ex) {
        Schedulers.handleError(ex);
      }
      finally {
        if (callRemoveOnFinish) {
          dispose();
        }
        else {
          lazySet(true);
        }
      }
    }
}

代码示例来源:origin: io.projectreactor/reactor-core

@Override
public Disposable schedule(Runnable task) {
  Objects.requireNonNull(task, "task");
  ExecutorTrackedRunnable r = new ExecutorTrackedRunnable(task, this, true);
  if (!tasks.add(r)) {
    throw Exceptions.failWithRejected();
  }
  try {
    executor.execute(r);
  }
  catch (Throwable ex) {
    tasks.remove(r);
    Schedulers.handleError(ex);
    throw Exceptions.failWithRejected(ex);
  }
  return r;
}

相关文章