Обработка ошибок в Core Data

Несколько недель назад я впервые начал использовать Core Data в нетривиальном приложении. Одна из вещей, которая меня удивила и смутила, заключалась в том, как работает обработка ошибок. Чтобы привести пример, одной из первых вещей, которые я попробовал, было установить мой файл данных как «заблокированный» в Finder, чтобы убедиться, что я правильно обрабатываю объект NSError, возвращаемый по ссылке, когда я устанавливаю URL-адрес файла. К моему удивлению, вместо того, чтобы вернуть nil и установить NSError, постоянный координатор хранилища вызвал неперехваченное исключение из базового NSData!

В то же время кажется, что обработка ошибок иногда в Core Data немного не нужна. Например, я не вижу очевидной причины, по которой для запроса на выборку потребуется обработка ошибок, помимо ошибок программиста (которые, кстати, также вызывают исключение в моем опыте). В этих случаях я передавал NULL для указателя ссылки NSError.

Между блоками try / catch и NSError я мог бы потратить много времени на написание кода, чтобы успокоить Core Data, но я хочу быть практичным в этом, поэтому я не трачу время на код ошибки, который никогда не запустится. Имея это в виду, как вы подходите к обработке ошибок в своих приложениях? Какие ошибки вы видели в реальном мире, и вы должны обязательно учитывать их?


person Marc Charbonneau    schedule 17.11.2008    source источник


Ответы (1)


Направление обработки ошибок, которое Apple использует с версии 1.4, - это NSError для ошибок, о которых приложение должно знать (например, та, которую вы указали выше), и исключения для ошибок программирования (которые никогда не должны проходить мимо QA).

В общем, вы должны программировать с учетом этих рекомендаций. Когда вы обнаружите подобную проблему, вы можете запрограммировать обработчик на данный момент на основе фактических результатов, которые вы обнаружите, но вы также должны сразу же опубликовать отчет об ошибке в Apple, поскольку этот шаблон противоречит тому, который они принимают.

Вы можете опубликовать отчет об ошибке на http://bugreport.apple.com/. Вам понадобится учетная запись ADC, но вы можете публиковать отчеты об ошибках с помощью бесплатной учетной записи. Я обнаружил, что они очень быстро реагируют на ошибки в наборе инструментов разработки и подобные проблемы, когда фреймворк ведет себя противоречащим заявленным ими шаблонам проектирования.

person Jason Coco    schedule 17.11.2008
comment
Это хороший совет, но я действительно надеялся получить еще несколько практических советов о том, с какими ошибками я, скорее всего, столкнусь в реальном приложении Core Data. - person Marc Charbonneau; 23.11.2008