4

我遇到了一个令人不安/令人困惑的错误。Core Data 似乎正在吞下自己的例外!在使用(超级有用的)CoreDataHelper时,我编写了一个格式错误的 fetch,导致“未实现的谓词 SQL 生成”异常。这部分很简单,真正奇怪的是这个异常被某个地方捕获并吞下,这意味着我的代码只是跳过了该方法的其余部分,并在没有任何控制台消息的情况下返回到主循环。很气人。

最终,我能够将实际的 fetch 请求包装在 @try 语句中并 @catch 异常:

@try{
fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
    NSLog(@"fetch successful");
}
@catch (NSException* exception) {
    NSLog(@"caught exception!\n\n%@\n\n%@\n\n%@",[exception name], [exception reason], [exception userInfo]);
}

这让我弄清楚它是什么,但它仍然没有意义被某个地方抓住。除了测试之外,我没有在我的代码中的任何其他地方使用过@try/@catch 。

我还尝试创建一个空白的 Core Data 项目并使用没有 @try/@catch 语句的 CoreDataHelper 来尝试隔离问题,项目中没有其他内容,CoreDataHelper 可以正常工作,返回:

CoreDataTest[1044:11603] *** Terminating app due to uncaught exception   'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate ("test" LIKE attribute)'

所以我的项目中的某些东西正在捕获并忽略这个异常,但这不是我,除非我可以在不使用@catch 的情况下以某种方式做到这一点。

会是什么呢?!

4

1 回答 1

2

知道了!

我正在使用具有自己的库的外部附件(Linea Pro-4 条形码扫描仪/MSR),这就是捕获异常的原因,即使在其最新版本的框架中也是如此。

在运行相同的获取请求之前,我设置了我的空白测试项目以连接到附件,然后 bam!燕子例外!

于 2013-02-11T20:01:38.083 回答