我对Objective-C还比较陌生,现在开始想知道处理和捕获错误的常见/标准/适当方式是什么?
看起来可以使用NSError来做到这一点,这是一个好主意还是滥用了Cocoa?
我对Objective-C还比较陌生,现在开始想知道处理和捕获错误的常见/标准/适当方式是什么?
看起来可以使用NSError来做到这一点,这是一个好主意还是滥用了Cocoa?
我相信这就是NSError类的存在目的——提供关于错误的详细信息。你最经常看到的模式就是一个接受指向NSError对象的指针的方法,例如:
- (id)doSomethingWithArgument:(id)arg error:(NSError **)error
方法会返回一些值(或可能是 nil
),如果调用失败,将在传递的指针处放置一个NSError对象,其中包含有关失败的详细信息。您的文档需要说明,如果方法遇到错误,将返回什么内容。@throw
-@catch
块;但是,在Objective-C中,@throw
异常会耗费相当多的计算资源,通常只建议在非常特殊的情况下使用它。@throw
抛出异常有非常强烈的意见。总结一下这个问题的(非常有帮助的)评论:error
方法或发布NSNotification的实例。
- 如果您确实经常使用@throw
/@catch
块,请非常小心围绕它们的逻辑。Objective-C提供了许多将方法分离以在其他线程中运行或延迟执行等方式。编写代码时要非常小心,考虑所有这些可能性。
- 最后,另一个非常有效的观点是:error
对象,则返回值应指示它。不要尝试同时执行两个操作(返回部分有效的对象并设置error
对象)。