трейт
trait Storage[F[_]]{
def uploadFile(path: String): F[Unit]
def recover(): F[Unit]
}
У меня есть его имплементация:
class AmazonS3StorageInterpreter extends Storage[IO]{
def uploadFile(path: String): IO[Unit] = {
//AmazonS3 java Api
//throws AmazonS3 specific excption
}
//...
}
Проблема в том, что я хочу вызывать recover в BracketCase, но для этого мне нужно знать тип экскпшена, который может выкинуться при попытке записи.
Оборачиваеть все хранилище-спицефические эксепшены во всех реализациях интерпретатора в тот который я буду обрабатывать в bracketCase очень error-prone.
Как бы вы посоветовали быть в такой ситуации?
trait Storage[F[_], E]
Обсуждают сегодня