比较来自世界各地的卖家的域名和 IT 服务价格

例外处理的实践 Try-catch 为了 iPhone/Objective-C

如果这个问题已经在其他地方举行了回复,我道歉,但是在寻找他时,我找不到任何果断答案:

我想知道块 try-catch 将用于应用程序 objective-c iPhone. 在 Apple "Introduction to the Objective-C Programming Language" 据说例外是资源密集型的 "您不应该对一般流量控制或仅用于指定错误。" 在阅读与这些问题相关的问题之后,我也意识到人们不会在实践中使用这种方法。

因此,我认为这个问题如下:建议使用块的情况是什么情况 try-catch 在开发时 iPhone/Objective-C 当他们必须绝对时 NOT 用过的?

例如,我可以在与数组中的对象一起使用时使用它们在边界外部和其他例外情况下。 我有一种方法,它执行多个任务,其中对象在几个阵列中传输。 如果发生错误并且块返回该方法返回零 try-catch 可以帮助我抓住一个例外。 但是,当然,我可以只要在这里测试,在这里和那里确保我永远不会尝试访问数组外部的索引。 在这个情况下,你会怎么做?

非常感谢!
已邀请:

裸奔

赞同来自:

使用 @try/@catch 您只能使用非抗拒错误。 永远不要使用 @throw/@try/@catch 执行类似于控制流的操作。

特别是,用于拦截例外是不切实际的 out-of-bounds, 如果只有你的目标是捕获它们,那么以某种方式报告错误,然后,通常为完成工作或至少打扰用户应用程序处于不一致状态并且可以丢失数据的事实。

未定义通过系统框架代码生成的任何异常的行为。

如果检查边界的测试是一个更合适的解决方案。

快网

赞同来自:

@bbum's 答案绝对正确 /他会比大多数人更好地了解答案/. 再来一点 ...

在 Cocoa 通常避免使用例外 /
@try/@catch[/@finally]

/控制流程。 如上所述,例外的成本非常高。 /与这样的时间相比 JVM 或者 CLR, 优化以使用例外/. 另外,大多数框架 Cocoa 例外不安全。 因此,通过框架代码抛出排除 Cocoa 危险,最有可能,会导致奇怪,困难和挑战,灾难性和灾难性 /考虑可能的数据丢失/ 您的应用程序中的错误。

而不是使用异常代码 Cocoa 用途
NSError

错误信号可以

恢复

在申请中。 例外用于发出申请不是的信号条件

能够

恢复。 因此,组件 UI, 要求职位 out-of-bounds 在模型的数组中,可以用错误发信号通知 /提交给用户无法完成其请求的原因/ 当试图访问该位置时 out-of-bounds 考虑到索引,在您看来必须有效,当您的申请处于不一致状态时,表示异常状态,并且在可能在造成更大损坏之前可能会尽快死亡。


NSParameterAssert

, 例如,信号
NSException

, 当语句失败时。

所以当你的时候

应该

使用例外或
@try/@catch

? 如果您使用库 C/C++, 使用异常,您必须在通过代码丢弃它们之前捕获这些异常。 Cocoa. 以同样的方式,如果你认真感受到申请中国家的一致性,你

应该

一旦发现你的状况不一致,就会出现异常 /和无关/.

要回复问题请先登录注册