Во время просмотра 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
или .map
или .flatMap
?