首页 > 技术文章 > iOS 捕获异常不崩

tongyuling 2017-05-16 13:45 原文

设置:

/**

 统一捕获异常

 @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:@""];

}

 

推荐阅读