1
我在我的應用程序中使用Realm。我正在嘗試爲所有類型的錯誤實現一個統一的錯誤處理接口。例如,我有一個類可以處理所有User
相關的任務。所以我有一個名爲UserError
的枚舉。拋出的錯誤被抓到錯誤catch
import Foundation
import RealmSwift
enum UserError: Error {
case doesNotExist
case alreadyExists
case databaseError(error: Error)
}
class UserHelper {
/// Fetch user object for the given email if exists.
func getUser(forEmail email: String) throws -> User {
do {
guard let user = try Realm().object(ofType: User.self, forPrimaryKey: email) else {
throw UserError.doesNotExist
}
return user
} catch {
throw UserError.databaseError(error: error)
}
}
}
我有一個單獨的包羅萬象的databaseError
枚舉值來捕獲所有領域相關的錯誤。
我的方法的問題是,當我扔在那裏我查詢數據庫的do-catch
內doesNotExist
錯誤,該錯誤被內部抓住了這個方法的catch
和被重新拋出作爲databaseError
。我希望錯誤以原始類型doesNotExist
到達。
我該如何做到這一點?
它的工作原理!謝謝。 – Isuru