Обработка ошибок в Core Data - PullRequest
4 голосов
/ 18 ноября 2008

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

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

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

1 Ответ

2 голосов
/ 18 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...