我正在使用Restkit的对象管理器来处理我的远程api调用。
它会引发NSAssert导致各种错误。例如,如果服务器返回错误页面而不是格式正确的json,则即使代码没有问题,它也会引发NSAssert。
我有些困惑(大多数与异常和nsasserts的一般处理有关)
非常感谢您的帮助-非常感谢!
// code to catch NSAssert that sharedManager throws
@try{
[sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
}
@catch (NSException *ex) {
NSLog(@"exception caught");
}
最佳答案
通常,您不应该尝试捕获NSAssert
错误,因为它们意味着出现了严重的错误-例如应用程序内部状态变得不一致,您使用的库不正确等,因此需要退出应用程序。[1]
未捕获错误的原因是因为NSAssert
引发了NSInternalInconsistencyException
[2],它是一个字符串,而不是NSException的实例。您仍然可以按照[3]的方式捕获它们,例如与
@catch (id ex)
但由于上述原因,不建议使用。
要回答您的第三个问题,请提供有关引发
NSAssert
等的更多详细信息。[1] What's the point of NSAssert, actually?
[2] http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/macro/NSAssert
[3] http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Exceptions/Tasks/HandlingExceptions.html