如何在@try @catch中使xCode停止记录错误

时间:2012-02-23 09:23:59

标签: ios xcode logging

所有

我有一大堆代码运行在很多记录上,大约一半的情况都失败了(这是好的,有些记录根本没有所需的数据)我把这段代码放在@try @catch中阻止它运行顺利,我们尝试做我们的事情,如果我们失败,我们有一些默认行动。

当它在@try块中失败时,它通常是一个无法识别的选择器错误,因为它在@try块中我捕获了这个错误,但它仍然每次都被记录,即使我没有从我的@catch登录块。这非常烦人,因为它阻塞了我的日志记录。如果我希望记录@ try / @ catch的错误,我会在@catch中处理它吗?

如何阻止XCode记录@try块中随后在@catch块中解析的错误?

我正在使用XCode 4.2

由于

3 个答案:

答案 0 :(得分:1)

在Objective-C中,对于可能出现在程序中的任何正常情况使用异常是不行的。异常仅用于发现和捕获编程错误并正常终止。问题是所有标准库(Cocoa,CoreFoundation,C标准库,......)都不是为了处理异常而构建的,如果异常通过它们将无法清理资源。

理论上,如果您确保正确执行内存和其他清理并且不通过外部代码,则可以使用异常。如果您使用ARC,那么有一个编译器开关-fobjc-arc-exceptions可以帮助您正确地进行内存管理(在您的代码中)。

通常的做法是根本不使用异常(除了错误,例如使用NSAssert)。

答案 1 :(得分:0)

异常本身不会将任何消息记录到控制台。 Xcode(默认情况下)也不会记录任何异常抛出。

错误捕获代码在抛出异常之前编写消息。当发送无法识别的选择器时,NSObject的doesNotRecognizeSelector:会打印一条消息。你无法关闭它。

答案 2 :(得分:0)

所以你想看到某些日志消息而不是其他消息。如何重定向调试器输出into a file。在该文件上使用grep或具有良好过滤功能的文本编辑器来扫描您想要查看的消息。复制&从gdb控制台粘贴到编辑器中会做同样的伎俩。

相关问题