2015-09-18 44 views
4

没有人知道下面的领域功能的try-catch语法是?领域抛catch Swift 2.0

realm.write() { 
    realm.add(whatever) 
} 

,我发现了以下错误:

call can throw but it is not marked with 'try' and the error is not handled

回答

14

从我想象realm.write()可以抛出异常。在Swift 2中,你用do/catch处理异常并尝试。

我怀疑你应该做这样的事情:

do { 
    try realm.write() { 
     realm.add(whatever) 
    } 
} catch { 
    print("Something went wrong!") 
} 

如果realm.write()抛出一个异常,print语句将被立即调用。

+0

谢谢!它似乎工作! – Michael

1

您也可以尝试

try! realm.write { 
    realm.add(whatever) 
} 
+7

我看到这是一些Realm文档,但我不明白他们为什么会让所有函数抛出,如果他们从不打算失败。 '试试!'似乎有风险吗? –

5

它看起来像一个NSError被抛出。见Swift 2.0 source

添加到@ tgebarowski的回答是:

do { 
    try self.realm.write { 
     realm.add(whatever) 
    } 
} catch let error as NSError { 
    print("Something went wrong!") 
    // use the error object such as error.localizedDescription 
}