代码之家  ›  专栏  ›  技术社区  ›  Ovi Tisler

为iphone编写api时,错误处理的最佳实践是什么?

  •  11
  • Ovi Tisler  · 技术社区  · 15 年前

    我们正在为iphone开发人员编写一个api,我们不知道什么是处理异常的最佳实践。我们调查过 NSError ,标准POSIX方式, NSException

    大多数api使用的约定是什么?哪一个是最“客观友好的”?

    2 回复  |  直到 15 年前
        1
  •  14
  •   Dave DeLong    15 年前

    Introduction to Exception Programming Topics :

    重要的 :应保留对编程异常或意外运行时错误(如越界集合访问、尝试改变不可变对象、发送无效消息和断开与窗口服务器的连接)的使用。通常在创建应用程序而不是在运行时处理此类错误,但有例外。

    建议使用错误对象(nserror)和cocoa错误传递机制来传递cocoa应用程序中的预期错误,而不是异常。有关详细信息,请参见 Error Handling Programming Guide For Cocoa .

    因此,据我所知,只有在出现致命错误时才使用异常。否则,使用 NSError 物体。

        2
  •  2
  •   Tyler    15 年前

    + 1 NSError .

    我忘记了我在苹果文档中读到的地方,但我也记得他们鼓励“先尝试,然后检查错误”的编码理念,而不是“检查有效性,然后执行操作”。例如,与其在使用之前查看网络是否可用,不如试着使用它。如果/当你拿回一个错误时,我会做出回应。

    对于许多用例,我同意这种哲学,因为(a)它将有效性检查移动到动作的时刻,所以在某种意义上它更准确,(b,主观的)在这种模式下使用代码更有趣。

    总之,建议是 恩塞罗 ,并提供即时反馈 NSError** 接受的参数 NULL ,对您的api用户非常友好!在cocoa/touch中的几个地方也建立了这种模式;例如 NSString 方法 writeToFile:atomically:encoding:error: .