我编写了一个iOS库,通过单个.h文件(MyAdaptedViewController.h)引用。
这实际上是一个位于完整UIViewController内的视图。
然而,由于库的性质,它可能会崩溃(处理信号处理,网络连接和音频输入/输出)。
如果在单个UIViewController中发生崩溃,我希望保护整个应用程序免受崩溃,即如果发生崩溃,用户可以在MyAdaptedViewController被禁用时继续使用该应用程序。我知道这将取决于崩溃的类型,但我希望大多数崩溃/异常都可以被捕获?
E.g。
将@try {} @ catch {}或
void uncaughtExceptionHandler(NSException * exception)
可能的解决方案吗?
答案 0 :(得分:2)
NO!在iOS应用中捕获异常是普通Cocoa编码约定的例外。
NSException
用于在运行时无法恢复的异常错误。
NSError
用于指出您在运行时从中恢复或至少向用户显示的错误。
不要尝试处理捕获异常可能引发的每个错误。如果您完成编程错误,Apple提供的API将仅引发异常。例如,如果您尝试访问数组中的对象索引超出范围,这是一个编程错误,因为您应该在访问对象之前获得正确的索引。
对于所有其他情况,您应该使用NSError
的实例,就像Apple一样。
如果这样做是正确的,请在内部处理lib中的错误。如果不可能将错误传递给你的调用者,让他们处理它。
我在这里写了一篇关于这个主题的更长篇博文:http://blog.jayway.com/2010/10/13/exceptions-and-errors-on-ios/