Мы разрабатываем некоторые системы в нашей компании в Scala, и у нас есть некоторые сомнения. Мы обсуждали, как отображать будущие исключения, и мы не знаем, когда мы должны использовать опцию 1 или вариант 2.
val created: Future[...] = ???
Вариант 1:
val a = created recover {
case e: database.ADBException =>
logger.error("Failed ...", e)
throw new business.ABusinessException("Failed ...", e)
}
Вариант 2:
val a = created recoverWith {
case e: database.ADBException =>
logger.error("Failed ...", e)
Future.failed(new business.ABusinessException("Failed ...", e))
}
Может кто-нибудь объяснить, когда я должен сделать вариант 1 или вариант 2? Что такое diff?