iOS程序中捕获异常退出信息,并提交服务器

jopen 10年前

         可以通过写一个类CrashExceptioinCatcher,在类中定义一个静态方法startCrashExceptionCatch, 方法里调NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

绑定void uncaughtExceptionHandler(NSException *exception)方法处理异常信息,在void uncaughtExceptionHandler(NSException *exception)里将异常打印出来,并附带上设备信息提交至服务器,这样在测试时候能够比较有效的收集异常信息。

头文件

</div> </div>
    #import <Foundation/Foundation.h>                @interface CrashExceptioinCatcher : NSObject                + (void)startCrashExceptionCatch;                @end  

实现文件
    #import "CrashExceptioinCatcher.h"                // 提交异常Log信息        void uncaughtExceptionHandler(NSException *exception) {                        // 异常Log信息            NSString *logInfo = [NSString stringWithFormat:@"Crash:\n%@\nStack Trace:\n%@\n",                                 [exception description], [exception callStackSymbols]];            NSLog(@"%@", logInfo);                        // TODO: 提交服务器收集            // ....        }                        @implementation CrashExceptioinCatcher                + (void)startCrashExceptionCatch        {            // Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.            NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); //设置异常Log信息的处理        }                @end  
</div> </div>

使用方法:

</div> </div>
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions                {                        [CrashExceptioinCatcher startCrashExceptionCatch];                        // .................                    }  



参考:http://arthurchen.blog.51cto.com/2483760/734175