iOS异常捕捉与处理,我设置了NSSetUncaughtExceptionHandler(),可是在我的项目中总是不调用?

我写好了一个异常处理的Demo,在该Demo中设置了NSSetUncaughtExceptionHandler(),当程序出现异常时,会自动调用设置的方法处理异常(我将异... 我写好了一个异常处理的Demo,在该Demo中设置了NSSetUncaughtExceptionHandler(),当程序出现异常时,会自动调用设置的方法处理异常(我将异常信息写入Cache文件夹下),下次app启动时,检测是否有异常日志,如果有就上传到服务器。

说明:我写好的Demo运行一起正常,可正常捕捉异常并写入文件,下次启动上报服务器也是成功的。
我的项目之前用过友盟的统计和异常捕捉。

问题:当我集成到现有的项目中就不行了,出现异常(闪退)也不会调用我的异常处理方法。

我的分析:
1、可能在某个地方也设置了NSSetUncaughtExceptionHandler();
2、可能是友盟也在捕捉异常,导致我这里捕捉不到了。
3、也许是某个地方有一个开关可以控制此处。
展开
 我来答
匿名用户
推荐于2016-08-25
展开全部
iOS开发中我们会遇到程序抛出异常退出的情况,如果是在调试的过程中,异常的信息是一目了然,但是如果是在已经发布的程序中,获取异常的信息有时候是比较困难的。

iOS提供了异常发生的处理API,我们在程序启动的时候可以添加这样的Handler,这样的程序发生异常的时候就可以对这一部分的信息进行必要的处理,适时的反馈给开发者。

不足的地方是,并不是所有的程序崩溃都是由于发生可以捕捉的异常的,有些时候是因为内存等一些其他的错误导致程序的崩溃,这样的信息是不在这里体现的。

我做了一个简单的类,进行很基本的操作,可以添加和获取Handler,捕获到异常后将信息写入到app的Documens下的Exception.txt中。

其实还有很多的处理的办法。
l 比如可以在程序下一次起来的时候读取这个异常文件发生到服务端。
l 或者直接就是在处理代码中用openurl的方式(mailto:)调用发送邮件的方式,将异常信息直接变成邮件发送到指定地址。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式