我对 Objective-c 很陌生,并且开始想知道处理和捕获错误的常见/标准/正确方法是什么?
似乎可以使用 NSError 来做到这一点,这是一个好主意还是劫持可可?
我对 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
对象)。