如何解决在Restkit中处理NSAsserts引发
| 我正在使用Restkit的对象管理器来处理我的远程api调用。 它将NSAssert引发大量错误。例如,如果服务器返回错误页面而不是格式正确的json,则即使代码没有问题,它也会引发NSAssert。 我有些困惑(大多数与异常和nsasserts的一般处理有关) 我们应该如何处理这些NSAsserts错误?例如,我们想要重试几次,然后显示“出现问题”消息。 (而不是使应用程序崩溃) 我试图使用catch-try块来捕获错误(下面的代码),但是没有捕获到错误。所以我的应用程序一直在失败。此外,无论如何我都不喜欢在发布模式下使用try-catch。 就我的理解而言,为什么Restkit使用NSAsserts而不是其他失败 非常感谢您的帮助-非常感谢!// code to catch NSAssert that sharedManager throws
@try{
[sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
}
@catch (NSException *ex) {
NSLog(@\"exception caught\");
}
解决方法
通常,您不应该尝试捕获“ 1”个错误,因为它们表示某些地方出了严重的错误-例如应用程序内部状态不一致,您使用的库不正确等,-因此应用程序需要退出。[1]
未捕获错误的原因是因为
NSAssert
引发了NSInternalInconsistencyException
[2],这是一个字符串,而不是NSException的实例。您仍然可以按照[3]的方式捕获它们,例如与
@catch (id ex)
但由于上述原因,不建议使用。
要回答您的第三个问题,请提供有关raised1ѭ等的更多详细信息。
[1]实际上,NSAssert有什么意义?
[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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。