min*_*eow 5 iphone objective-c ios4 ios restkit
我正在使用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");
}
Run Code Online (Sandbox Code Playgroud)
一般来说,您不应该尝试捕获NSAssert错误,因为它们意味着出现了严重错误 - 例如应用程序内部状态变得不一致,您错误地使用了库等 - 因此应用程序需要退出。[1]
错误未被捕获的原因是NSAssert引发了一个NSInternalInconsistencyException[2],它是一个字符串,而不是 NSException 的实例。您仍然可以按照[3]捕获它们,例如
@catch (id ex)
Run Code Online (Sandbox Code Playgroud)
但由于上述原因,不建议这样做。
为了回答您的第三个问题,请提供所NSAssert提出的更多详细信息等。
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |