NSAssert выдаст исключение при сбое.Так что NSAssert - это короткий и простой способ написать и проверить все предположения, которые вы сделали в своем коде.На мой взгляд, это не альтернатива исключениям, а просто ярлык.Если утверждение не выполнено, значит, в вашем коде что-то пошло не так, и программа не должна продолжаться.
Следует отметить, что NSAssert не будет скомпилирован в ваш код при сборке выпуска, поэтому обычно используетсядля проверки работоспособности во время разработки.Я на самом деле склонен использовать пользовательский макрос assert, который всегда активен.
Когда вы @throw
свой собственный NSException бывали, когда вы определенно захотите его в сборке релиза и в других вещахнапример, публичные библиотеки / интерфейс, когда некоторые аргументы недействительны или вы были вызваны неправильно.Обратите внимание, что на самом деле не принято @catch
исключение и продолжать запускать ваше приложение.Если вы попробуете это с некоторыми стандартными библиотеками Apple (например, Core Data), могут произойти плохие вещи.По аналогии с утверждением, если выдается исключение, приложение должно обычно завершаться довольно быстро, потому что это означает, что где-то есть ошибка программирования.
NSErrors следует использовать в ваших библиотеках / интерфейсах для ошибоккоторые не являются ошибками программирования, и которые могут быть восстановлены из.Вы можете предоставить вызывающей стороне информацию / коды ошибок, и они могут аккуратно обработать ошибку, при необходимости предупредить пользователя и продолжить выполнение.Обычно это относится к таким вещам, как ошибка «Файл не найден» или другая нефатальная ошибка.