长时间潜伏,第一次海报。

我正在编写可可应用程序,该应用程序大量使用NSOperationQueues来管理后台任务。该应用程序是对一个较旧的应用程序的重写,该应用程序使用手动管理的NSThreads完成了类似的工作。

要求之一是我们捕获/记录所有未捕获的异常,以避免应用终止。在较旧的应用程序版本中,我们将使用NSExceptionHandler API安装所有所有线程的异常陷阱。既然我们已经从线程中删除了一个抽象级别,则我无权访问线程对象(实际上,我的印象是,队列使用的线程可能会因每次操作调用而改变)。

当后台操作失败时,如何防止应用崩溃的推荐/最佳方法是什么?

如果重要的话,可以在Mac OS X 10.6上进行部署。

最佳答案

我使用以下方法自己解决了这个问题:

NSInteger mask = (NSLogUncaughtExceptionMask| NSHandleUncaughtExceptionMask | NSLogUncaughtSystemExceptionMask | NSHandleUncaughtSystemExceptionMask | NSLogUncaughtRuntimeErrorMask | NSHandleUncaughtRuntimeErrorMask | NSLogTopLevelExceptionMask | NSHandleTopLevelExceptionMask);
[[NSExceptionHandler defaultExceptionHandler] setDelegate:[[MyExceptionHandler new] autorelease]];
[[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:mask];


可以在指南“异常编程主题”的“控制程序对异常的响应”部分中找到详细信息。

10-08 04:02