【发布时间】:2021-08-13 14:49:41
【问题描述】:
有没有办法从 SchedulerExecutorService 抛出/传播异常?
我可以包装我的 runnable 并在其中包含 errorHandler 但这不会停止我的应用程序。
反正我可以从单例访问主线程但是如何强制主线程抛出异常
@Test
public void executorTest()throws Exception{
Thread mainThread = Thread.currentThread();
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(() -> {
try{
Integer.parseInt("error");
}catch (Exception e){
System.err.println("catch error");
//mainThread.interrupt(); //i want to fail the test , but need a better way
throw new RuntimeException(e); //this will not affect main thread
}
},0,100, TimeUnit.MILLISECONDS);
Thread.sleep(1000);
System.out.println("shout not see this statement");
}
【问题讨论】:
-
"并在其中包含 errorHandler 但这不会停止我的应用程序"当然这取决于您如何实现错误处理程序。
标签: java multithreading junit-jupiter