繁体   English   中英

在objective-c中返回错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM