Ответ 1
NSError
предназначен для нефатальных, восстанавливаемых ошибок. Проблемы, которые предназначены для захвата с помощью NSError
, часто являются ошибками пользователя (или являются ошибками, которые могут быть представлены пользователю), часто могут быть восстановлены из (следовательно -presentError:
и NSErrorRecoveryAttempting
), и обычно это ожидаемые или предсказуемые ошибки (например, попытка открыть файл, который вы не имеют доступа или пытаются конвертировать между несовместимыми строковыми кодировками).
NSException
предназначен для потенциально смертельных ошибок программиста. Эти ошибки предназначены для обозначения потенциальных недостатков в вашем приложении, где вы неправильно проверили предварительные условия для выполнения некоторых операций (например, пытаться получить доступ к индексу массива, который выходит за пределы его или пытаться изменить неизменяемый объект). Введение в Руководство по программированию исключений объясняет это немного.