Если вы думаете, что ваш checkIfExists
метод не может элегантно обработать ошибку. Это хороший признак того, что ошибка должна быть передана вызывающей стороне и обработана там вместо этого:
func checkIfExists(id: String) throws -> Bool{
let fetchRequest: NSFetchRequest<Conversions> = Conversions.fetchRequest()
let predicate = NSPredicate(format: "id == %@", id)
fetchRequest.predicate = predicate
fetchRequest.fetchLimit = 1
let count = try PersistenceService.context.count(for: fetchRequest)
return count != 0
}
В вызывающей стороне вы можете do...catch
сообщить об ошибке, и, надеюсь, (если вызывающая сторона должна вернуть значение), может вернуть значимое значение, даже если произошла ошибка.
Если вызывающая сторона все еще не может вернуть значимое значение, вы распространяете ошибку снова, и в конечном итоге достичь того, который обрабатывает пользовательский ввод или что-то (что не возвращает значение). Там вы увидите сообщение об ошибке для пользователя.
В зависимости от вашей конструкции, возвращение false
при возникновении ошибки также может быть вариантом - если ошибка возникает при доступе к файлу БД, просто предположим, что его не существует.