Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何拦截致命异常?_Ios_Ipad_Exception Handling - Fatal编程技术网

Ios 如何拦截致命异常?

Ios 如何拦截致命异常?,ios,ipad,exception-handling,Ios,Ipad,Exception Handling,我想在我的iPad应用程序中集成一种方法来监控用户活动,尤其是发生并触发应用程序停止的异常,类似于苹果的bug报告,但适用于移动客户端 我试图将主操作(main.m)封装在@try和@catch块之间,但是直到那里才抛出异常,我无法在代码中的任何地方添加这样的块。委托方法applicationWillTerminate都没有被调用,应用程序只是在没有任何通知的情况下被粗暴地停止 有什么想法吗 它在main.m中对我有效 int main(int argc, char *argv[]) {

我想在我的iPad应用程序中集成一种方法来监控用户活动,尤其是发生并触发应用程序停止的异常,类似于苹果的bug报告,但适用于移动客户端

我试图将主操作(
main.m
)封装在
@try
@catch
块之间,但是直到那里才抛出异常,我无法在代码中的任何地方添加这样的块。委托方法
applicationWillTerminate
都没有被调用,应用程序只是在没有任何通知的情况下被粗暴地停止


有什么想法吗

它在
main.m中对我有效

int main(int argc, char *argv[]) {
    @autoreleasepool { 
        int retVal = 0;
        @try {
            retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
        @catch (NSException *exception) {
            NSLog(@"Exception: %@", exception);
            [exception raise];
        }

        return retVal;    
    }
}
附言

另一个棘手的方法:


的示例想象以下场景:将“nil”添加到可变数组中,或尝试访问数组中不存在的索引。这种情况并不罕见,可能是控制器或元素在某种情况下无效且不存在,因此应用程序不会捕获抛出的异常,甚至不会使用NSError代替NSException。应用程序将在没有任何通知的情况下停止。您是对的,完全忘记了
NSSetUncaughtExceptionHandler
总比没有更好的解决方案要好。在
上介绍的解决方案解决了我的问题。在指定的响应中,只有方法1和方法2对我有效。我无法理解为什么上面的示例与我尝试过的示例类似,但不起作用,它应该与未处理的异常处理程序相同。