Нет - подкласс NSException, если вы хотите разные типы исключений.
Однако исключения не должны использоваться для потока управления на iOS.Исключения следует использовать только для невосстановимых ошибок.Не используйте исключения, скажем, для проверки ввода пользователя.
Что касается того, почему вы не должны использовать исключения;фреймворки явно спроектированы и реализованы таким образом, что исключения используются только для обозначения неисправимых ошибок.
Любое исключение, которое выдается через код в фреймворках - выбрасывается через фрейм стека, который находится в фреймворках - будетнеопределенное поведение.
Вы не можете «исправить» это, очистив память в локальной области видимости в @finally (больше, чем вы можете сделать не поточно-безопасный код многопоточным, «применяя достаточное количество блокировок»).
Для невосстановимых ошибок, бросьте NSExceptions, сообщите об ошибке и вылетите.Однако учтите, что вам может быть лучше вызвать abort () в тот момент, когда проблема обнаружена, поэтому сбой содержит полную трассировку стека.
Для исправляемых ошибок используйте NSError в том же шаблоне, что и остальные платформы..