【发布时间】:2012-03-13 16:29:12
【问题描述】:
全部,
我有一段代码运行在很多记录上,并且在大约一半的情况下失败(这没关系,有些记录根本没有所需的数据)我把这段代码放在 @try @catch阻止以使其顺利运行,我们尝试做我们的事情,如果我们失败了,我们有一些默认操作。
当它在@try 块中失败时,通常是一个无法识别的选择器错误,因为它在@try 块中我捕获了这个错误,但它仍然每次都被记录,即使我没有从我的@catch 记录堵塞。这很烦人,因为它阻塞了我的日志记录。如果我想记录来自@try/@catch 的错误,我会在@catch 中处理它,对吗?
如何阻止 XCode 在 @try 块中记录错误,这些错误随后在 @catch 块中得到解决?
我正在使用 XCode 4.2
谢谢
【问题讨论】:
-
您通常应该避免在 Objective-C 中使用异常 (@try/@catch[/@finally]) 进行流控制。异常带来异常大的成本(与运行时相比,例如 JVM 或为异常使用而优化的 CLR)。此外,大多数 Cocoa 框架都不是异常安全的。因此,通过 Cocoa 框架代码引发异常是危险的,并且可能会在您的应用中导致奇怪的、难以诊断的和灾难性的(考虑可能的数据丢失)错误。
-
Cocoa 代码不使用异常,而是使用 NSError 来指示可在应用程序中恢复的错误条件。异常用于指示您的应用程序无法从中恢复的条件。