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 |