Should I ignore _NSCoreDataConstraintViolationException?

For some reason I only recently found out about unique constraints for Core Data. It looks way cleaner than the alternative (doing a fetch first, then inserting the missing entities in the designated context) so I decided to refactor all my existing persistence code.

If I got it right, the gist of it is to always insert a new entity, and, as longs as I have a proper merge policy, saving the context will take care of the uniqueness and in a more efficient way. The problem is every time I save a context with the inserted entity I get a NSCoreDataConstraintViolationException, no error though. When I do the fetch to make sure

  1. there is indeed only one instance with a unique field
  2. other changes to this entity were applied

everything seems to be okay, but I’m still concerned about this exception, since I do saves and therefore get it quite often, a few times per second in some cases.

My project is in objective-c and I know exceptions are expensive there so I’m having doubts if I’m missing something.

Here is a sample project with this issue (just a few lines of code, be sure to add an exception breakpoint)

Source: Swift