iOS 捕获系统外异常-阿里云开发者社区

开发者社区> 技术mix呢> 正文

iOS 捕获系统外异常

简介:
+关注继续查看

iOS 捕获系统外异常

太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载。谢谢合作。


有时应用崩溃,而日志中的输出信息太少。无法定位问题,这是最头疼的事情。尤其非常累的时侯。已经想不起来刚才改过什么了。这就叫做无耐。

工欲善其事。必先利其器,以下的方法能够给多些信息,让你看到堆栈运行顺序。在哪里崩溃的,也就能大概给个思路,确定问题的症结。

在 AppDelegate.m 类实现之前增加:

void UncaughtExceptionHandler(NSException *exception) {
    
    // 获取异常相关信息
    NSArray *callStackSymbols = [exception callStackSymbols];
    NSString *callStackSymbolStr = [callStackSymbols componentsJoinedByString:@"\n"];
    NSString *reason = [exception reason];
    NSString *name = [exception name];
    
    // 获取系统当前时间
    NSDate * date = [NSDate date];
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init ];
    [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH小时mm分ss秒"];
    NSString * dateStr = [dateFormatter stringFromDate:date];
    
    NSLog(@"系统当前时间为:%@ \n",dateStr);
    NSLog(@"异常名称:%@ \n",name);
    NSLog(@"异常原因:%@ \n",reason);
    NSLog(@"堆栈标志:%@ \n",callStackSymbolStr);
}


在 AppDelegate.m 类实现的应用启动方法中增加例如以下语句,为系统设置异常回调函数为上面的声明,具体说明见 iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5266854.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ECS运维:操作系统有异常?诊断日志来帮忙!
操作系统配置不当或程序过载可能会造成ECS系统内核崩溃,这将导致夯机、异常重启或无法正常启动等问题。为了分析根本原因,运维人员通常要查看系统日志,但此时也许实例已经无法正常远程连接,使得分析诊断非常困难。阿里云提供了一键查看系统日志和屏幕截图功能,为运维人员提供一个方便的工具,支持系统故障的分析。
6982 0
执行Socket socket = new Socket(ip, port);时抛出个异常:android.os.NetworkOnMainThreadException解决办法
首先,确认你的android版本是4.0之后再用此方法解决,因为在4.0之后在主线程里面执行Http请求才会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。Android在4.0之前的版本支持在主线程中访问网络,但是在4.0以后对这部分程序进行了优化,也就是说访问网络的代码不能写在主线程中了。
747 0
关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
原文:关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 关于Microsoft.CSharp.RuntimeBinder.RuntimeBinderException的异常一般来自于两种, 第一种: Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported 解决它的办法是,直接在项目引用中添加 Micorsoft.Csharp 就可以了。
1355 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4620 0
ios系统能力&api转载链接汇总
1.判断有无sim卡 http://www.2cto.com/kf/201306/223744.html 2.Let's Build xxx (如nsobject)系列- by Mike Ash,可以用做学习(理解很多ios内部的实现机制),很不错  https://www.
815 0
+关注
2969
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载