Skip to content

Commit fa927ab

Browse files
committed
ExecutorScheduler delivers uncaught exceptions
Instead of swallowing unhandled errors, ExecutorScheduler delivers them to the executing thread's UncaughtExceptionHandler. This addresses the same issue as #1682, but for ExecutorScheduler which does not used ScheduledAction.
1 parent e886c50 commit fa927ab

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/main/java/rx/schedulers/ExecutorScheduler.java

+2
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ public void run() {
173173
actual.call();
174174
} catch (Throwable t) {
175175
RxJavaPlugins.getInstance().getErrorHandler().handleError(t);
176+
Thread thread = Thread.currentThread();
177+
thread.getUncaughtExceptionHandler().uncaughtException(thread, t);
176178
} finally {
177179
unsubscribe();
178180
}

src/test/java/rx/schedulers/ExecutorSchedulerTest.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package rx.schedulers;
1717

18+
import org.junit.Test;
1819
import rx.Scheduler;
1920
import rx.internal.util.RxThreadFactory;
2021

@@ -29,5 +30,14 @@ public class ExecutorSchedulerTest extends AbstractSchedulerConcurrencyTests {
2930
protected Scheduler getScheduler() {
3031
return Schedulers.from(executor);
3132
}
32-
33+
34+
@Test
35+
public final void testUnhandledErrorIsDeliveredToThreadHandler() throws InterruptedException {
36+
SchedulerTests.testUnhandledErrorIsDeliveredToThreadHandler(getScheduler());
37+
}
38+
39+
@Test
40+
public final void testHandledErrorIsNotDeliveredToThreadHandler() throws InterruptedException {
41+
SchedulerTests.testHandledErrorIsNotDeliveredToThreadHandler(getScheduler());
42+
}
3343
}

0 commit comments

Comments
 (0)