iPhone开发如何捕获提交异常日志

简介:

近几个月在公司安排和我个人的要求下,接触了iPhone方面的开发,主要都是应用方面的,参与了两个iPhone项目的开发,并且已经比较至AppStore了,终于可以休息一段时间了。

  项目开发中,经常遇到一个问题。每次辛苦的发布版本给测试人员测试后,收获一推Bug,面对这些问题,有些问题还是很容易就找到的,那些很难重现的问题就让人无语了。如果不是在模拟器上,又或者我们的设备没有连接到PC上,那么如何调试我们的程序呢?如果应用已经发不到AppStore了,用户在使用过程中出现了问题,我们当然希望能够感知到这个问题,并在更新下个版本时修改和完善我们的应用。

  这就引出一个需求:捕获应用使用时出现的异常,提交至服务器或者开发者的邮箱。

  废话不多说,直接上代码。

  1、用于处理未被try...catch...捕获的异常

  void UncaughtExceptionHandler(NSException *exception) {

  // 异常的堆栈信息

  NSArray *stackArray = [exception callStackSymbols];

  // 出现异常的原因

  NSString *reason = [exception reason];

  // 异常名称

  NSString *name = [exception name];

  NSString *syserror = [NSString stringWithFormat:@"异常名称:%@\n异常原因:%@\n异常堆栈信息:%@",name, reason, stackArray];

  NSLog(@"%@", syserror);

  // 发送异常至开发者的邮箱或者发送至服务器端

  }

  2、在应用启动的地方替换系统原有的处理异常的Handler

  // 保存系统处理异常的Handler

  _uncaughtExceptionHandler = NSGetUncaughtExceptionHandler();

  // 设置处理异常的Handler

  NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);

  3、在应用退出时,还原异常处理的Handler

  - (void)applicationWillTerminate:(UIApplication *)application

  {

  // 还原为系统处理异常的Handler

  NSSetUncaughtExceptionHandler(_uncaughtExceptionHandler);

  }

  这样,如果测试人员或者用户发现崩溃性的问题,我们就很容易找到原因,并进行修正。








本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/812708,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
11天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
2月前
|
数据库
什么是计算机软件开发领域的 verbose 代码和日志
什么是计算机软件开发领域的 verbose 代码和日志
31 0
|
3月前
|
调度
kettle开发篇-写日志
kettle开发篇-写日志
87 0
|
1天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
7 0
|
2月前
|
供应链 Java 测试技术
开发Java应用时如何用好Log
开发Java应用时如何用好Log
72 3
|
4月前
|
Java Maven
maven 项目配置日志打印以及异常日志打印问题
maven 项目配置日志打印以及异常日志打印问题
57 0
|
5月前
|
监控 Java
Springboot开发系统记录操作日志
Springboot开发系统记录操作日志
94 3
|
5月前
|
消息中间件 搜索推荐 关系型数据库
淘东电商项目(51) -全局异常日志采集(ELK+Kafka)
淘东电商项目(51) -全局异常日志采集(ELK+Kafka)
54 0
|
5月前
|
应用服务中间件
Tomcat启动时日志报 dcom.sun.manager.jmxremote 异常导致无法正常启动使用
Tomcat启动时日志报 dcom.sun.manager.jmxremote 异常导致无法正常启动使用
|
编解码 iOS开发
iphone 开发的基本入门知识
iphone 开发的基本入门知识
149 0