У меня есть следующий код, который использует замыкание лениво инициализировать свойство:Swift 2: Ловля ошибок в затворе
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
do {
try coordinator.addPersistentStoreWithType(NSInMemoryStoreType, configuration: nil, URL: nil, options: nil)
} catch let err as NSError {
XCTFail("error creating store: \(err)")
}
return coordinator
}()
Код, как написано производит ошибку:
Call can throw, but it is not marked with 'try' and the error is not handled
Код помечен как «try», и ошибка обрабатывается. Когда я перемещаю замыкание в отдельную функцию и называю ее здесь, все работает так, как ожидалось.
Есть ли что-то о закрытии и делать/пытаться/поймать, что я не понимаю, или я столкнулся (еще одна!) Ошибка в замечательном компиляторе Swift 2?
Действительно. Спасибо за разъяснения. –
Любая идея, почему моя локальная версия метода сработала? –
Вы правы. Локальная версия метода успешно завершена. Извините, я не могу объяснить разное поведение. Возможно, стоит радар. –