在Cocoa中,何时应该使用NSAssert,NSException,NSError?
这就是我一直在想的:
NSAssert - 在创建任何用于程序员自身利益的客户端程序时,可以仔细检查规则,约定,假设或前置条件和后置条件?
NSException - 为了使用该库的其他程序员的利益创建第三方库,以便他们立即知道输入何时无效?
NSError - 当与外部系统连接以获取不保证给我结果的文件,数据库或Web服务等数据时?
我最近读了两篇非常有趣的建议:
assert过NSAssert......没有任何理由不使用assert?(这不是字母:))我正在iOS上开发一个应用程序.我看到有一个叫做的宏NSAssert1.它是为了什么?NSLog和之间的用法有什么不同NSAssert1?
请指导我或建议我可以阅读的教程.
我正在使用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) objective-c ×4
ios ×2
assert ×1
cocoa ×1
conventions ×1
ios4 ×1
iphone ×1
nsassert ×1
restkit ×1