我正在编写iOS应用程序的开始。阅读了关于如何处理错误的Apple指南,我得到了以下最重要的观点:
NSError
现在,NSError
通常作为out-argument传递,然后可以在内部使用,并且必须由调用者进行检查。但是,我问自己,使用全局错误处理程序是否是一个好主意,比如说包裹NSError
的单例,可以用来触发被调用函数中的错误和错误处理。 / p>
是否有任何反对该方法的内容,或者这是一种不好的做法?
答案 0 :(得分:1)
MacOS X具有error responder chain的概念,ErrorKit是一种非正式协议,可以在响应者链中传播错误,直到处理完毕。无论出于何种原因,这在iOS上的Cocoa中没有实现,但存在多个第三方实现:
{{3}}
还有其他几个。
这种方法非常灵活,文档齐全,是MacOS X上的最佳实践,并且通常优于使用单例来实现此目的。
答案 1 :(得分:0)
这将是一件非常糟糕的事情,因为你的观点" NSError适用于用户"根本不正确。 NSErrors会告知您的软件无法执行操作的原因。这是否是用户需要被告知的错误完全取决于具体情况。
答案 2 :(得分:0)
在实践中,大多数错误需要在非常狭窄的环境中处理,并且您不会通过尝试在NSError类中包装某些东西来获得任何东西。只需处理错误,然后继续执行。
答案 3 :(得分:0)
iOS中的大多数例外情况基本上是致命的"并且无法有效处理(因此在iOS应用程序中使用异常处理程序是不常见的)。
按照惯例,使用返回码或通过从被调用函数返回nil或0来报告非致命错误。在许多这种情况下,当收到错误的返回码时,可以使用error:
参数(应记录/转储生成的NSError值)。
(请注意,error:
parm结果不是您检查是否发生错误的结果。而是其他地方的错误返回代码表示应记录/转储error:
parm结果。)
极少数情况下,向用户报告NSError内容是有意义的 - 大多数情况下,这些信息仅对程序员有意义。