在 PR 审查期间,我被要求替换Sync[F].delay
为,Sync[F].catchNonFatal
因为可能会抛出异常。
这确实有效:
scala> Sync[IO].delay(throw new Exception).recover{ case t: Throwable => 42 }.unsafeRunSync
res10: Int = 42
不确定该行为是否特定于IO
,我还能够找到相应的法律说它实际上是预期的,但我在主要的猫效应文档中找不到关于 API 中自动处理异常的提及。
.delay
有没有人知道在or .map
or中抛出 cat-effect wrt 异常的原理和预期行为.flatMap
?