OC中应该使用try catch吗?带着这个疑问,我们来看一下苹果的官方文档。我将会翻译这一系列文章。
本文讨论如何引发和处理异常:中断程序正常执行流的特殊条件。Objective-C指令和Foundation中的异常接口可在iOS和OS X上使用。
重要提示:你应该保留对编程或意外运行时错误使用异常的情况,例如越界集合访问、尝试改变不可变对象、发送无效消息以及断开与窗口服务器的连接。通常在创建应用程序时用异常来处理而不是在运行时来处理这些类型的错误。
如果你有一段代码(例如第三方库)使用异常来处理错误情况,你可以像在Cocoa应用程序中那样使用这些代码。但是,你应该确保任何预期的运行时异常不会从这些子系统中溢出,并最终出现在调用方的代码中。例如,解析库可能会在内部使用异常来指示问题,并允许从一个可能非常深的递归解析状态中快速退出;但是,你应该在库的顶层捕获此类异常并将其转换为适当的返回代码或状态。
与异常不同,错误对象(NSError)和Cocoa错误传递机制是在Cocoa应用程序中传递预期错误的推荐方法。有关更多信息,请参阅《错误处理编程指南》。
本文件的组织
本文档包括以下文章:
- 异常和Cocoa框架,描述了NSException对象及其在Cocoa框架中的一般用途。
- 处理异常,描述了如何使用编译器指令@try,@catch,和@finally处理异常。
- 抛出异常,描述了如何抛出一个异常。
- 嵌套异常处理,描述了异常如何被嵌套。
- 预定义的异常,描述了在何处查找Cocoa定义的异常。
- 未捕获的异常,描述了未被异常处理程序捕获的异常发生的情况。
- 控制程序对异常的响应,描述了如何使用异常处理框架来监控和控制Cocoa程序响应各种异常类型的行为。
- 64位可执行文件中的异常,描述了64位可执行文件中的零成本@try块和C++互操作性。
另请参阅
有关发起、处理和从预期运行时错误中恢复的信息,请参阅《错误处理编程指南》。
有关Foundation框架支持断言和日志错误信息,请参阅相关文档《断言和日志编程指南》。
网友评论