Ожидаемые спецификаторы объявления “NSRangeException”

У меня было это в моем try-catch-finally, и он компилирует хорошо.

@catch (NSException *e) {
.....
}

... но когда я пытался поймать NSRangeException: Я получил ошибку.

@catch (NSRangeException *ne) {
.....
}

Ошибка:

Expected declaration specifiers: NSRangeExpection

(TechZen заявляет - это, по-видимому, опечатка для:)

Expected declaration specifiers: NSRangeException

Я сделал позже для импорта "Funcation/NSException.h", но он не удалил ошибку.

1
задан Unplug 28 June 2010 в 19:30
поделиться

1 ответ

Эта ошибка может быть вызвана ошибками вложенности в коде, предшествующем строке. Возможно, это не имеет ничего общего с самой линией. Проверьте и / или разместите код над строкой, в которой возникает ошибка.

Если сообщение об ошибке, которое вы отправили, является фактическим сообщением, которое вы получили обратно, то вы допустили простую опечатку, написав NSRangeExpected для NSRangeException.


Обновление:

Хорошо, взглянув еще раз, ответ прост, и я его просто пропустил. NSException - это класс, но NSRangeException - это имя, определенное в строковой константе:

extern NSString *NSRangeException;

... которая просто возвращает строку «NSRangeException».

Очевидно, @catch ожидает получения объекта NSException , но вместо этого получает объект NSString.

Вы можете настроить @catch для приема такой строки:

@catch(NSString *stringException){...

или

@catch(id idException){...

... но обычно нет причин для этого.

Вы используете NSRangeException и другие имена исключений для проверки имени экземпляра NSException , который перехватывает @catch .

2
ответ дан 2 September 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: