长期潜伏者,第一次海报。
我正在编写一个 cocoa 应用程序,它大量使用 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];
详细信息可在异常编程主题指南的“控制程序对异常的响应”部分中找到
关于objective-c - 如何在 NSOperationQueues 上自动安装 NSExceptionHandlers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199696/