中断异常而没有错误信息

时间:2012-07-22 18:01:41

标签: objective-c exception core-data nsmanagedobjectcontext

此代码违反了非致命异常,但未提供重要的错误信息。这是在核心数据实体更新之后。

-(void) commitBackgroundChangesAndNotify:(NSString *)notification{
    NSLog(@"enter commit");

    if([self.backgroundMOC hasChanges]) {

        NSError *error = nil;
        if (!([self.backgroundMOC save:&error])){     // breaks here
            NSLog(@"Unresolved Error %@ %@", error, [error userInfo]);
        } 

//        [[NSNotificationCenter defaultCenter] postNotificationName:notification object:nil];

    }   

    NSLog(@"exit commit");

}

在调试器中是否启用了断点。如果我在没有调试器的情况下运行它,它似乎运行正常。

在NSOperation期间,此代码会多次运行。在操作期间,第二次调用保存时会发生中断(意味着上下文的更改已成功保存一次。)我验证了backgroundMOC是在创建更改和提交的同一线程中创建的,这是NSOperation的主线。我还查看了moc insertedObjects,updatedObjects和deletedObjects的计数。这些看起来都很正确。

调用代码如下所示:

- (void) calculateBoundsForSearch {
    NSArray *searchesArray = [currentSearchEntity.resultOfSearch allObjects];

    MyMKMapBounds bounds = [MapController calculateBoundsForArrayOfSearchResults:searchesArray];

    currentSearchEntity.minLatitude = [NSNumber numberWithFloat:bounds.min.latitude];
    currentSearchEntity.minLongitude = [NSNumber numberWithFloat:bounds.min.longitude];
    currentSearchEntity.maxLatitude = [NSNumber numberWithFloat:bounds.max.latitude];
    currentSearchEntity.maxLongitude = [NSNumber numberWithFloat:bounds.max.longitude];

    [dataInterface commitBackgroundChangesAndNotify:@"bounds"];
}

这是由两个对象调用的。首先,没有例外。

控制台中唯一的输出是:

2012-07-22 10:47:13.790 myApp[46578:17e07] enter commit

Catchpoint 7 (exception thrown).2012-07-22 10:47:21.160 myApp[46578:17e07] exit commit

这是一个非致命的例外。我注意到的一件事,我不明白,当它打破时,我必须点击继续两次以通过它。第一次点击后会显示消息Catchpoint 7 (exception thrown).

我正在试图找出我手头有哪些工具来确定异常的原因。当然,任何导致异常的想法都会有所帮助。

0 个答案:

没有答案