iOS程序中捕獲異常退出信息,并提交服務器

jopen 10年前發布 | 10K 次閱讀 IOS iOS開發 移動開發

         可以通過寫一個類CrashExceptioinCatcher,在類中定義一個靜態方法startCrashExceptionCatch, 方法里調NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

綁定void uncaughtExceptionHandler(NSException *exception)方法處理異常信息,在void uncaughtExceptionHandler(NSException *exception)里將異常打印出來,并附帶上設備信息提交至服務器,這樣在測試時候能夠比較有效的收集異常信息。

頭文件

</div> </div>

    #import <Foundation/Foundation.h>

@interface CrashExceptioinCatcher : NSObject  

+ (void)startCrashExceptionCatch;  

@end  </pre><br />

實現文件

    #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  </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959550218752918547" target="_blank"></a></div>

</div> </div>

使用方法:

</div> </div>

    - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions

{  

    [CrashExceptioinCatcher startCrashExceptionCatch];  

    // .................  

}  </pre><br />


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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!