【问题标题】:iOS: Prevent library from crashing entire appiOS:防止库崩溃整个应用程序
【发布时间】:2011-10-13 15:01:18
【问题描述】:

我为 iOS 编写了一个库,它通过单个 .h 文件 (MyAdaptedViewController.h) 引用。

这本质上是一个位于完整 UIViewController 中的视图。

但是由于库的性质,它可能会崩溃(处理信号处理、网络连接和音频输入/输出)。

如果单个 UIViewController 发生崩溃,我想要保护整个应用程序免受崩溃,即如果发生崩溃,用户可以在禁用 MyAdaptedViewController 时继续使用该应用程序。我知道这取决于崩溃的类型,但我希望可以捕获大多数崩溃/异常?

例如

@try{}@catch{} 或

void uncaughtExceptionHandler(NSException *exception)

可能的解决方案?

【问题讨论】:

    标签: ios exception crash try-catch


    【解决方案1】:

    不!在 iOS 应用程序中捕获异常是正常 Cocoa 编码约定的一个例外。

    NSException 用于在运行时无法恢复的异常错误。 NSError 用于在运行时排除的错误,或者至少向用户显示。

    不要试图处理通过捕获异常引发的所有错误。 Apple 提供的 API会在您出现编程错误时引发异常。例如,如果您尝试访问数组中越界的对象索引,这是一个编程错误,因为您应该在访问对象之前获取正确的索引。

    对于所有其他情况,您应该使用 NSError 的实例,就像 Apple 一样。

    如果这样做是正确的,请在内部处理您的库中的错误。如果不可能,将错误传递给调用者,让他们处理。

    我在这里写了一篇关于这个主题的更长的博客文章:http://blog.jayway.com/2010/10/13/exceptions-and-errors-on-ios/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2013-05-30
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多