欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS-捕获崩溃的异常和友好的处理

程序员文章站 2024-03-20 20:04:58
...

1.前言

开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存;另一种是未被捕获的Objective-C异常(NSException),导致程序向自身发送了SIGABRT信号而崩溃。其实对于未捕获的Objective-C异常,我们是有办法将它记录下来的,如果日志记录得当,能够解决绝大部分崩溃的问题。这里对于UI线程与后台线程分别说明。

网上的捕获异常的方法都大同小异,都是处理处理signal信号。这里我把捕获的异常保存到缓存目录上,然后你可以通过邮件或者网络接口把自己发给自己或者公司,便于自己分析和在下个版本上进行修复工作。

2.创建单利

单利主要做有一下功能,捕获崩溃日志、存取日子和界面提示功能;详见ZFJUncaughtExceptionHandler.h的方法;

iOS-捕获崩溃的异常和友好的处理

  1. 初始化

iOS-捕获崩溃的异常和友好的处理

默认我是打开异常捕获的,当然你可以这这里面添加一个字段来控制打开或者关闭捕获功能;

iOS-捕获崩溃的异常和友好的处理

可以通过添加一个字段install来打开或者关闭,例如:
从异常堆栈里面获取异常信息;

iOS-捕获崩溃的异常和友好的处理

处理异常

iOS-捕获崩溃的异常和友好的处理异常日志保存到本地;

iOS-捕获崩溃的异常和友好的处理

3.函数调用
4.运行效果

iOS-捕获崩溃的异常和友好的处理

5.DEMO下载

https://github.com/joinxinxu/WXHandler.git