轉(zhuǎn)載https://blog.csdn.net/grozy_sun/article/details/68969541
在閱讀《高性能iOS應(yīng)用開發(fā)》的時候,看注釋提到了NSSetUncaughtExceptionHandler這個類,簡單了了解了一下。終于明白如友盟、Buggly等軟件異常捕獲是如何實現(xiàn)的。
說明
利用NSSetUncaughtExceptionHandler可以用來處理異常崩潰。崩潰報告系統(tǒng)會用NSSetUncaughtExceptionHandler方法設(shè)置全局的異常處理器。
如果自定義NSSetUncaughtExceptionHandler監(jiān)聽事件,會導(dǎo)致第三方監(jiān)聽失效,需要注意。
void UncaughtExceptionHandler(NSException *exception) {
NSArray *arr = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSLog(@"%@\n%@\n%@",arr, reason, name);
}
-
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);NSArray *arr = @[@(0), @(1)];
NSLog(@"%@", arr[2]); //模擬越界異常
return YES;
}
image
通過使用別的方法也可以激活異常:
[NSException raise:@”Crash Button Was Clicked” format:@”“];