预期的声明说明“NSRangeException”

时间:2010-06-28 15:26:50

标签: iphone exception-handling

我在try-catch-finally中有这个,它编译好了。

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

...但是当我试图捕获NSRangeException时:我收到了错误。

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

错误是:

Expected declaration specifiers: NSRangeExpection

TechZen说 - 这可能是一个错字:

Expected declaration specifiers: NSRangeException

我后来导入了“Funcation / NSException.h”,但它没有删除错误。

1 个答案:

答案 0 :(得分:2)

此错误可能导致行前面的代码中出现嵌套错误。它可能与线本身无关。检查和/或发布发生错误的行上方的代码。

如果您发布的错误消息是您回来的实际消息,那么您有一个简单的错误,即为NSRangeException编写NSRangeExpected。


更新

好的,再看一遍,答案很简单,我就错过了。 NSException是一个类,但NSRangeException是在字符串常量中定义的名称:

extern NSString *NSRangeException;

...只返回一个“NSRangeException”字符串。

显然,@catch期望接收一个NSException对象,但却得到一个NSString对象。

您可以设置@catch接受这样的字符串:

@catch(NSString *stringException){...

@catch(id idException){...

......但通常没有理由。

使用NSRangeException和其他异常名称来测试name捕获的NSException实例的@catch