2008-11-17 5 views
4

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

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

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

ответ

2

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

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

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

+0

Это хороший совет, но я действительно надеялся на некоторые практические советы, по которым я, скорее всего, столкнулся с реальным приложением Core Data. – 2008-11-22 22:36:25