Swift не выбрасывает ошибку от закрытия - PullRequest
0 голосов
/ 27 октября 2019

У меня проблема с повторной выдачей ошибки Realm из закрытия действия (которое выбрасывает) в космическое пространство, где я хочу перехватить и обработать эти ошибки как результаты ошибки.

Вот пример использования кода

let result = withRealm("insert") { realm -> Entity in

            var object = RealmObject()
            self.encode(entity: e, into: &object)

            try realm.write {
                realm.add(object, update: .error)
            }

            return self.decode(object: object)
        }

, а вот протокол с реализацией REALM, где действие должно быть albo для выброса

public protocol IRealmStorage {
    //associatedtype Entity

    func withRealm<Entity>(_ operation: String, action: (Realm) throws -> Entity) -> Result<Entity, Error>
}

public extension IRealmStorage {
    func withRealm<Entity>(_ operation: String, action: (Realm) throws -> Entity) -> Result<Entity, Error> {

        do {
            let realm = try Realm()
            let entity = try action(realm)
            return .success(entity)
        } catch let err {
            print("Failed realm \(operation) with error: \(err)")
            return .failure(err)
        }
    }
}

Но я не понимаю, зачем пытатьсяrealm.write () выдает ошибку, и она не перехватывается и не перебрасывается в космическое пространство, которое будет отслеживаться с помощью блока do-try-catch.

...