2015-09-18 47 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 
}