Спецификаторы ожидаемой декларации "NSRangeException" - PullRequest
1 голос
/ 28 июня 2010

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

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

... но когда я попытался отловить исключение NSRangeException: я получил ошибку.

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

Ошибка:

Expected declaration specifiers: NSRangeExpection

( TechZen говорит - это, вероятно, опечатка для: )

Expected declaration specifiers: NSRangeException

Я сделал позже, чтобы импортировать «Funcation / NSException.h», но это не устранило ошибку.

1 Ответ

2 голосов
/ 28 июня 2010

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

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


Обновление:

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

extern NSString *NSRangeException;

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

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

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

@catch(NSString *stringException){...

или

@catch(id idException){...

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

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

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