iOS已发布应用中对异常信息捕获和处理
iOS开发中我们会遇到程序抛出异常退出的情况,如果是在调试的过程中,异常的信息是一目了然,但是如果是在已经发布的程序中,获取异常的信息有时候是比较困难的。
iOS提供了异常发生的处理API,我们在程序启动的时候可以添加这样的Handler,这样的程序发生异常的时候就可以对这一部分的信息进行必要的处理,适时的反馈给开发者。
不足的地方是,并不是所有的程序崩溃都是由于发生可以捕捉的异常的,有些时候是因为内存等一些其他的错误导致程序的崩溃,这样的信息是不在这里体现的。
我做了一个简单的类,进行很基本的操作,可以添加和获取Handler,捕获到异常后将信息写入到app的Documens下的Exception.txt中。
其实还有很多的处理的办法。
l
l
以下是完整的代码实现。
使用场景示例:
#pragma mark - #pragma mark Application lifecycle - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp } |
基本接口展示:
#import <Foundation/Foundation.h> @interface NdUncaughtExceptionHandl + (void)setDefaultHandler; + (NSUncaughtExceptionHandl @end //还可以选择设置自定义的handler,让用户取选择 |
接口实现展示
#import "NdUncaughtExceptionHandl NSString *applicationDocumentsDire } void UncaughtExceptionHandler } @implementation NdUncaughtExceptionHandl -(NSString *)applicationDocumentsDire } + (void)setDefaultHandler { } + (NSUncaughtExceptionHandl { } @end |
异常崩溃报告:
=============异常崩溃报告============= name: NSRangeException reason: *** -[NSArray objectAtIndex:]: index 1 beyond bounds [0 .. 0] callStackSymbols: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |