设置:
/**
统一捕获异常
@param exception 异常信息
*/
void gloablException(NSException * exception) {
#ifdef DEBUG
// 异常信息打印
NSLog(@"异常信息:\n%@", exception);
NSLog(@"异常堆栈信息:\n %@", [exception callStackSymbols]);
#else
// TODO: 可以直接将 exception 中的所有信息发到服务器.
#endif
// 重启
[[NSRunLoop currentRunLoop]addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop]run];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 捕获所有异常
NSSetUncaughtExceptionHandler(gloablException);
return YES;
}
测试:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSMutableArray* arrM = @[];
// 这句代码会发生异常
[arrM addObject:@""];
}