【发布时间】:2020-03-19 10:07:19
【问题描述】:
我在我的应用程序中经常使用guard 语句和fatalError() 来确保数据处于一致状态。它们有助于在开发阶段捕获错误。现在我处于项目的后期阶段,开始考虑如何处理发布版本中的那些fatalError() 调用。
我不想删除它们,因为它们有助于暴露未知错误。我不想让它们在产品发布中保持原样,因为它们只会中止应用程序,这不会为用户提供任何有关问题所在的有用信息。我想要实现的是在屏幕上显示一条错误消息,然后在用户按“确定”时中止。我认为可能有两种方法可以做到这一点:
1) 不要打电话给fatalError()。改为抛出错误。让顶级代码处理错误(例如,显示警报)。该方法的问题是它需要更改许多函数才能变为可抛出,我认为这很不方便。
2) 第二种方法是,根据我在网上阅读的内容,代码可以在不访问屏幕上当前视图控制器的情况下创建警报。诀窍是创建一个新窗口。我还没有调查细节。
我担心的是,我认为这两种方法都有相同的固有局限性,并不适用于所有情况。例如,假设UITableViewControler 的数据源委托方法出现问题,从委托方法中显示警报是否有效?我怀疑。
所以我想知道向用户显示致命错误消息的常见做法是什么?感谢您的任何建议。
【问题讨论】:
标签: ios uikit fatal-error