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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
1 091
1

Ответы 1

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

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

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

Это хороший совет, но я действительно надеялся получить еще несколько практических советов о том, с какими ошибками я, скорее всего, столкнусь в реальном приложении Core Data.

Marc Charbonneau 23.11.2008 01:36

Другие вопросы по теме