Java 类io.reactivex.exceptions.UndeliverableException 实例源码
项目:rxjava2-extras
文件:FlowableCollectWhileTest.java
@Test
public void testDoesNotTwoErrorsIfUpstreamDoesNotHonourCancellationImmediately() {
try {
List<Throwable> list = new CopyOnWriteArrayList<Throwable>();
RxJavaPlugins.setErrorHandler(Consumers.addTo(list));
Burst.items(1).error(new ThrowingException())//
.compose(Transformers. //
collectWhile( //
Callables.<List<Integer>>constant(Lists.<Integer>newArrayList()), ADD, //
BiPredicates.throwing())) //
.test() //
.assertNoValues() //
.assertError(ThrowingException.class);
assertEquals(1, list.size());
System.out.println(list.get(0));
assertTrue(list.get(0) instanceof UndeliverableException);
assertTrue(list.get(0).getCause() instanceof ThrowingException);
} finally {
RxJavaPlugins.reset();
}
}
项目:librus-client
文件:MainApplication.java
@Override
public void onCreate() {
super.onCreate();
applicationComponent = buildApplicationComponent();
applicationComponent.inject(this);
StrictMode.enableDefaults();
if (analytics.isPresent()) {
analytics.get().init();
}
RxJavaPlugins.setErrorHandler(throwable -> {
if (throwable instanceof UndeliverableException && throwable.getCause() instanceof HttpException) {
//If there are many requests sent at once, first error is handler normally, the rest lands here
LibrusUtils.log("plugin handle");
LibrusUtils.log(throwable);
} else {
Thread currentThread = Thread.currentThread();
Thread.UncaughtExceptionHandler handler = currentThread.getUncaughtExceptionHandler();
handler.uncaughtException(currentThread, throwable);
}
});
}
项目:ratpack-rx2
文件:ErrorHandler.java
@Override
public void accept(Throwable e) throws Exception {
if (e instanceof OnErrorNotImplementedException) {
Promise.error(e.getCause()).then(Action.noop());
} else if (e instanceof UndeliverableException) {
Promise.error(e.getCause()).then(Action.noop());
} else {
Promise.error(e).then(Action.noop());
}
}
项目:rxjava2-jdbc
文件:NonBlockingPoolTest.java
@Test
public void testPoolFactoryWhenFailsThenRecovers() {
AtomicReference<Throwable> ex = new AtomicReference<>();
Consumer<? super Throwable> handler = RxJavaPlugins.getErrorHandler();
RxJavaPlugins.setErrorHandler(t -> ex.set(t));
try {
TestScheduler s = new TestScheduler();
AtomicInteger c = new AtomicInteger();
NonBlockingPool<Integer> pool = NonBlockingPool.factory(() -> {
if (c.getAndIncrement() == 0) {
throw new TestException();
} else {
return c.get();
}
}) //
.maxSize(1) //
.scheduler(s) //
.createRetryInterval(10, TimeUnit.SECONDS) //
.build();
TestObserver<Integer> ts = pool.member() //
.map(m -> m.value()) //
.test() //
.assertNotTerminated() //
.assertNoValues();
s.triggerActions();
assertTrue(ex.get() instanceof UndeliverableException);
assertTrue(((UndeliverableException) ex.get()).getCause() instanceof TestException);
s.advanceTimeBy(10, TimeUnit.SECONDS);
s.triggerActions();
ts.assertComplete();
ts.assertValue(2);
} finally {
RxJavaPlugins.setErrorHandler(handler);
}
}
项目:nakadi-java
文件:ExceptionSupport.java
static boolean isInterruptedIOException(Throwable e) {
// unwrap to see if this is an InterruptedIOException bubbled up from rx/okio
if (e instanceof UndeliverableException) {
if (e.getCause() != null && e.getCause() instanceof UncheckedIOException) {
if (e.getCause().getCause() != null &&
e.getCause().getCause() instanceof InterruptedIOException) {
return true;
}
}
}
return false;
}
项目:nakadi-java
文件:StreamProcessor.java
private void setupRxErrorHandler() {
RxJavaPlugins.setErrorHandler(
t -> {
Throwable t0 = t;
if (t instanceof UndeliverableException) {
t0 = t.getCause();
}
if(this.failedProcessorException == null) {
this.failedProcessorException = t0;
}
if (t0 instanceof java.util.concurrent.RejectedExecutionException) {
// can happen with a processor stop and another start if the old one is interrupted
logger.debug("op=unhandled_rejected_execution action=continue {}", t0.getMessage());
} else {
if (t0 instanceof NonRetryableNakadiException) {
logger.error(String.format(
"op=unhandled_non_retryable_exception action=stopping type=NonRetryableNakadiException %s ",
((NonRetryableNakadiException) t0).problem()), t0);
stopStreaming();
} else if (t0 instanceof Error) {
logger.error(String.format(
"op=unhandled_error action=stopping type=NonRetryableNakadiException %s ",
t.getMessage()), t0);
stopStreaming();
} else {
logger.error(
String.format("unhandled_unknown_exception action=stopping type=%s %s",
t0.getClass().getSimpleName(), t0.getMessage()), t0);
stopStreaming();
}
}
}
);
}
项目:AutoDispose
文件:RxErrorsRule.java
public Throwable takeThrowableFromUndeliverableException() {
Throwable error = take();
assertThat(error).isInstanceOf(UndeliverableException.class);
return error.getCause();
}