iOS:防止库崩溃整个应用程序

时间:2011-07-26 17:29:30

标签: ios exception crash try-catch

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

这实际上是一个位于完整UIViewController内的视图。

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

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

E.g。

将@try {} @ catch {}或

void uncaughtExceptionHandler(NSException * exception)

可能的解决方案吗?

1 个答案:

答案 0 :(得分:2)

NO!在iOS应用中捕获异常是普通Cocoa编码约定的例外。

NSException用于在运行时无法恢复的异常错误。 NSError用于指出您在运行时从中恢复或至少向用户显示的错误。

不要尝试处理捕获异常可能引发的每个错误。如果您完成编程错误,Apple提供的API将引发异常。例如,如果您尝试访问数组中的对象索引超出范围,这是一个编程错误,因为您应该在访问对象之前获得正确的索引。

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

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

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