为 iPhone/CoreData 中未解决的错误替换 aborts()

Posted

技术标签:

【中文标题】为 iPhone/CoreData 中未解决的错误替换 aborts()【英文标题】:Replacing aborts() for unresolved errors in iPhone/CoreData 【发布时间】:2010-01-19 21:24:07 【问题描述】:

我的 iPhone 应用程序中有很多地方是这样的:

if (![context save:&error]) 
  /*
  Replace this implementation with code to handle the error appropriately.

  abort() causes the application to generate a crash log and terminate. 
  You should not use this function in a shipping application, although 
  it may be useful during development. If it is not possible to recover 
  from the error, display an alert panel that instructs the user to quit 
  the application by pressing the Home button.
  */

  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
  abort();

对于在生产应用程序中实际替换 abort() 的内容,我有点不知所措。我认为没有任何简单的方法可以让用户的设备将错误发送回给您。这里的标准做法是什么?

【问题讨论】:

【参考方案1】:

我所做的取决于应用程序中发生的事情。如果可以回滚保存而不影响应用程序,则可以这样做。那将是非常罕见的。更有可能的是,您希望让用户知道他们的保存失败。根据失败的原因,您可以提出重试或解释失败的原因。

这基本上取决于您的应用程序以及您如何最好地为用户服务。

【讨论】:

我同意唐的观点。至少您应该向用户显示错误的详细信息。也许可以选择向您发送报告,以便您可以在下一个版本中解决该问题。话虽如此,这些错误不应该在野外发生。根据我的经验,如果进行了充分的测试,Core Data 的错误几乎总是发生在开发中。我在 Core Data 中看到的唯一问题直接涉及迁移,而且通常在桌面上。 是的,我担心这是那些“没有真正答案”的问题之一。 :) 根据我的估计,不应该抛出任何错误,这意味着如果有的话,我错了……这会令人不安。谢谢大家!

以上是关于为 iPhone/CoreData 中未解决的错误替换 aborts()的主要内容,如果未能解决你的问题,请参考以下文章

CFT 模板错误:Fn::If 中未解决的条件依赖 UseDBSnapshot

如何解决在开发 C++ 中未定义的对 readimagefile 的引用错误 [重复]

Flutter 中未定义的类名“MaterialApp”。如何解决这个问题?

解决开发中未发生的暂存中的 nginx 404 错误

错误 LNK2019:matlab 中未解析的外部符号

使用 Ninja 使用 CMake 构建的 Unicode MFC 应用程序中未解决的 WinMain 错误