エラーが発生しやすいタスクをスケジュールする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