[英]Returning errors in objective-c
我对objective-c很新,我开始想知道处理和捕获错误的常用/标准/正确方法是什么?
似乎有可能使用NSError来做到这一点,这是一个好主意还是劫持可可?
我很确定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
对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.