我遇到了令人不安/令人困惑的错误.核心数据似乎吞噬了自己的例外!当使用(超级有用)
CoreDataHelper时,我编写了一个格式错误的提取,导致“未实现的SQL生成谓词”异常.这部分很简单,真正奇怪的是这个异常被捕获到某个地方并被吞没,这意味着我的代码在获取之后跳过了方法的其余部分并返回到没有任何控制台消息的主循环.相当真气.
最终我能够在@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项目,并使用CoreDataHelper而不使用@ try / @ catch语句尝试隔离问题,项目中没有任何其他内容,CoreDataHelper可以正常工作,返回:
CoreDataTest[1044:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate ("test" LIKE attribute)'
所以我的项目中有些东西正在捕捉并忽略这个异常,但除非我能在不使用@catch的情况下以某种方式做到这一点,否则不是我.
会是什么呢?!
最佳答案 得到它了!
我正在使用具有自己的库的外部附件(Linea Pro-4条形码扫描仪/ MSR),即使在最新版本的框架中也是如此.
我设置了我的空白测试项目,以便在运行相同的获取请求之前连接到附件,并且bam!吞下异常!