我在try-catch-finally中有这个,它编译好了。
@catch (NSException *e) {
.....
}
...但是当我试图捕获NSRangeException时:我收到了错误。
@catch (NSRangeException *ne) {
.....
}
错误是:
Expected declaration specifiers: NSRangeExpection
( TechZen说 - 这可能是一个错字:)
Expected declaration specifiers: NSRangeException
我后来导入了“Funcation / NSException.h”,但它没有删除错误。
答案 0 :(得分:2)
此错误可能导致行前面的代码中出现嵌套错误。它可能与线本身无关。检查和/或发布发生错误的行上方的代码。
如果您发布的错误消息是您回来的实际消息,那么您有一个简单的错误,即为NSRangeException编写NSRangeExpected。
好的,再看一遍,答案很简单,我就错过了。 NSException
是一个类,但NSRangeException
是在字符串常量中定义的名称:
extern NSString *NSRangeException;
...只返回一个“NSRangeException”字符串。
显然,@catch
期望接收一个NSException
对象,但却得到一个NSString对象。
您可以设置@catch
接受这样的字符串:
@catch(NSString *stringException){...
或
@catch(id idException){...
......但通常没有理由。
使用NSRangeException和其他异常名称来测试name
捕获的NSException
实例的@catch
。