iOS 捕获系统外异常

iOS 捕获系统外异常

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

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

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


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

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

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

[objc]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. void UncaughtExceptionHandler(NSException *exception) {  
  2.       
  3.     // 获取异常相关信息  
  4.     NSArray *callStackSymbols = [exception callStackSymbols];  
  5.     NSString *callStackSymbolStr = [callStackSymbols componentsJoinedByString:@"\n"];  
  6.     NSString *reason = [exception reason];  
  7.     NSString *name = [exception name];  
  8.       
  9.     // 获取系统当前时间  
  10.     NSDate * date = [NSDate date];  
  11.     NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init ];  
  12.     [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH小时mm分ss秒"];  
  13.     NSString * dateStr = [dateFormatter stringFromDate:date];  
  14.       
  15.     NSLog(@"系统当前时间为:%@ \n",dateStr);  
  16.     NSLog(@"异常名称:%@ \n",name);  
  17.     NSLog(@"异常原因:%@ \n",reason);  
  18.     NSLog(@"堆栈标志:%@ \n",callStackSymbolStr);  
  19. }  


在 AppDelegate.m 类实现的应用启动方法中加入如下语句,为系统设置异常回调函数为上面的声明,详细说明见 iOS Foundation 框架概述文档:常量、数据类型、框架、函数、发布声明
[objc]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @implementation AppDelegate  
  2.   
  3. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  4.       
  5.     NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);  
  6.       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值