我有一个调度容易出错的任务的Monix : Scheduler
import scala.concurrent.duration._
import monix.eval.Task
import monix.execution.Scheduler
import java.time._
scheduler.scheduleWithFixedDelay(0.seconds, 1.seconds) {
IO(println("qq"))
.map{ _ =>
if (Instant.now.getEpochSecond % 5 == 0)
throw new Exception()
}
.unsafeRunSync()
}
问题是——如果调度程序内的任务抛出异常,调度程序停止并且异常不会传播到主程序。我希望主程序获取异常并处理它(实际上我想停止整个程序。)。
我可能只是sys.exit()
在里面打电话,但我认为这并不理想,因为父进程应该监督子进程。
使用时Task
我可以从主程序中捕获它task.runSyncUnsafe()
,因为Scheduler
有没有办法做同样的事情?