Каковы лучшие практики для обработки ошибок при написании API для iphone? - PullRequest
11 голосов
/ 30 марта 2010

Мы пишем API для разработчиков iphone, и мы не знаем, как лучше всего обрабатывать исключения. Мы смотрели на NSError, стандартный способ POSIX, NSException

Какое соглашение используется большинством API? Какой из них наиболее "дружественный к Objective-C"?

Ответы [ 2 ]

14 голосов
/ 30 марта 2010

Из Введение в темы программирования исключений :

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

...

Вместо исключений объекты ошибок (NSError) и механизм доставки ошибок Какао являются рекомендуемым способом сообщения об ожидаемых ошибках в приложениях Какао. Для получения дополнительной информации см. Руководство по программированию обработки ошибок для какао .

Так что, насколько я понимаю, используйте исключения, только если что-то не так. В противном случае используйте NSError объектов.

2 голосов
/ 30 марта 2010

+ 1 для NSError.

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

Я согласен с этой философией для многих случаев использования, потому что (а) она переносит проверку достоверности на момент действия, поэтому в некотором смысле она более точна, и (б, субъективно) работать с кодом в этом более увлекательно шаблон.

Подводя итог, предлагаем использовать NSError и предоставлять немедленную обратную связь с NSError** параметрами, которые принимают NULL, чтобы быть очень дружественными для ваших пользователей API! Этот образец также установлен в нескольких местах в Какао / Прикосновении; например метод NSString writeToFile: атомарно: кодировка: ошибка: .

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